-
[ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 14Study/SQL 2024. 6. 14. 10:13728x90반응형
오늘부터 새로운 도전을 시작하려고 합니다.
바로 하루 5개씩 SQL 관련 문제를 푸는 것입니다.
매일 프로그래머스에서 제공하는 SQL 문제를 5개씩 해결하며, 데이터 베이스 관리 및 쿼리 작성 능력을 성장시키고자 합니다.
또한, 오라클(Oracle) 데이터베이스를 사용하여 문제를 해결함으로써, 실제 업무 환경에서 마주칠 수 있는 다양한 상황에 대비하고자 합니다.
매일 바쁜 일상 속에서 새로운 것을 배우고 성장하는 것은 어렵겠지만, 도전이라도 하면 어떨까 합니다.
프로그래머스는 무료로 다양한 난이도의 문제를 제공하기 때문에, 저는 제일 낮은 난이도부터 정답률이 높은 순서대로 풀어 보려고 합니다.
728x90
문제 풀이
해당 문제에 대한 자세한 내용은 프로그래머스에서 찾아볼 수 있습니다!
1. 서울에 위치한 식당 목록 출력하기
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요.
이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.SELECT a.rest_id, a.rest_name, a.food_type, a.favorites, a.address, round(sum(b.review_score)/count(b.review_score), 2) as score from rest_info a, rest_review b where a.rest_id = b.rest_id and a.address like '서울%' group by a.rest_id, a.rest_name, a.food_type, a.favorites, a.address order by score desc, a.favorites desc
2. 년, 월, 성별 별 상품 구매 회원 수 구하기
USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요.
결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요.
이때, 성별 정보가 없는 경우 결과에서 제외해주세요.SELECT extract(year from b.sales_date) as year, extract(month from b.sales_date) as month, a.gender as gender, count(distinct b.user_id) as users from user_info a, online_sale b where a.user_id = b.user_id and a.gender is not null group by extract(year from b.sales_date), extract(month from b.sales_date), a.gender order by 1, 2, 3
반응형3. 저자 별 카테고리 별 매출액 집계하기
2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.SELECT a.author_id, a.author_name, b.category, sum(bs.sales * b.price) as total_sales from book b, author a, book_sales bs where b.author_id = a.author_id and b.book_id = bs.book_id and to_char(bs.sales_date, 'yyyy-mm') = '2022-01' group by a.author_id, a.author_name, b.category order by 1, 3 desc
4. 우유와 요거트가 담긴 장바구니
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다.
우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요.
이때 결과는 장바구니의 아이디 순으로 나와야 합니다.SELECT cart_id from cart_products where name in ('Yogurt', 'Milk') group by cart_id having count(distinct name) >= 2 order by 1
5. 주문량이 많은 아이스크림들 조회하기
7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
select flavor from( select total + total_order, a.flavor from (SELECT j.flavor, sum(j.total_order) as total from first_half fh, july j where fh.shipment_id(+) = j.shipment_id group by j.flavor) a, first_half b where a.flavor = b.flavor order by 1 desc) where rownum <= 3
728x90반응형'Study > SQL' 카테고리의 다른 글
[ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 16 (Final) (0) 2024.06.17 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 15 (0) 2024.06.15 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 13 (2) 2024.06.11 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 12 (1) 2024.06.10 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 11 (0) 2024.06.09