링크
https://school.programmers.co.kr/learn/courses/30/lessons/144856
문제
2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.
정답
select b.author_id,
author_name,
category,
sum(price * sales) as total_sales
from book b
join author a on b.author_id = a.author_id
join book_sales s on b.book_id = s.book_id
where sales_date like '%2022-01%'
group by 1, 2, 3
order by 1, 3 desc
정답 2
with combined as (
select b.book_id,
b.author_id,
b.category,
(b.price * a.sales) as total_sales
from book_sales a
join book b on a.book_id = b.book_id
where date_format(sales_date, '%Y-%m') = '2022-01'
)
select a.author_id,
a.author_name,
c.category,
sum(c.total_sales)
from combined c
join author a on c.author_id = a.author_id
group by a.author_id, c.category
order by a.author_id, category desc
해설
- JOIN을 바로 이어서 붙여 3개의 테이블을 사용한다.
새롭게 이해한 내용
- JOIN을 따로 별칭을 붙이지 않고 바로 옆에 붙여서도 사용할 수 있다.
'[업무 지식] > MySQL' 카테고리의 다른 글
[컬럼, NULL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.10.16 |
---|---|
[조건과 서브쿼리] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2024.10.15 |
[JOIN & UNION] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.10.14 |
[조건 서브쿼리] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.10.13 |
[HAVING] 우유와 요거트가 담긴 장바구니 (0) | 2024.10.13 |