본문 바로가기
오답노트/SQL_1차

DAY 17. 문제 66~70 (Lv.5)

by 쿙이콩 2025. 6. 9.
728x90
반응형

67. 주문량이 많은 아이스크림들 조회하기 

7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성

select b.flavor
from (
select f.flavor, 
       sum(f.total_order) + ifnull(july_sum, 0) as total_sum
from first_half f left join (
select flavor, sum(total_order) as july_sum
from july 
group by flavor) a on f.flavor = a.flavor
group by flavor
order by total_sum desc
limit 3) b

1) sum(f.total_order) + ifnull(july_sum, 0) as total_sum 을 못 떠올림

-- ifnull을 써서 공백인 경우 0으로 설정

-- sum(total_order)도 그룹바이해서 합쳐야 함

-- 둘을 더하기 위해 + 사용 가능

2) left join을 해야함

-- 그래야 7월에 주문 없었어도 first_half에는 있는 주문건수 잘 합쳐짐

3) order by desc, limit으로 상위 3개 추출

 

68. 저자 별 카테고리 별 매출액 집계하기

2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성.
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬

select a.author_id,
       a.author_name,
       b.category,
       sum(b.price * s.sales) as total_sales
from author a 
join book b on a.author_id = b.author_id
join book_sales s on b.book_id = s.book_id
where year(s.sales_date) = 2022 and month(s.sales_date) = 01
group by 1, 2, 3
order by 1 asc, 3 desc

1) 세 개 테이블을 join 

2) 서브쿼리 필요 없음. 하나의 테이블로 다 가능

3) ★ where로 조건을 주는게 맞음 -- sum이 나온 것에 대해 조건을 주는게 아니므로(그럼 having써야 함)

    -- 오답이유: s.sales_date로 조건 요구했는데 b.published_date로 조건 걸었음 ㅠㅠ

4) ★ group by를 1,2,3으로 -- select 문에서 sum()을 넣은 것은 잘 함 그러나 모든 컬럼을 group by줘야하는 것 간과

728x90
반응형

'오답노트 > SQL_1차' 카테고리의 다른 글

DAY 16. 문제 61~65 (Lv.4)  (0) 2025.06.08
DAY 15. 문제 51~60 (Lv.4)  (6) 2025.06.03
DAY 14. 문제 31~50 (Lv.3)  (8) 2025.05.31
DAY 13. 문제 11~30 (Lv.2)  (6) 2025.05.31
DAY 12. 문제 1~10 (Lv.1)  (0) 2025.05.31