https://school.programmers.co.kr/learn/courses/30/lessons/144856
코딩테스트 연습 > GROUP BY > 저자 별 카테고리 별 매출액 집계하기
문제 분석
난이도: LEVEL4
문제 요구사항
2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.
정답 코드1
WITH RESULT AS (
SELECT B.BOOK_ID, B.CATEGORY, B.AUTHOR_ID, (B.PRICE * S.TOTAL_COUNT) TOTAL
FROM BOOK B JOIN (SELECT BOOK_ID, SUM(SALES) TOTAL_COUNT
FROM BOOK_SALES
WHERE YEAR(SALES_DATE) = '2022' AND MONTH(SALES_DATE) = '01'
GROUP BY BOOK_ID ) S
ON B.BOOK_ID = S.BOOK_ID
)
SELECT R.AUTHOR_ID, A.AUTHOR_NAME, R.CATEGORY, SUM(TOTAL) TOTAL_SALES
FROM RESULT R JOIN AUTHOR A ON R.AUTHOR_ID = A.AUTHOR_ID
GROUP BY R.AUTHOR_ID, R.CATEGORY
ORDER BY 1, 3 DESC
정답 코드2
SELECT B.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY, SUM(B.PRICE * S.SALES) AS TOTAL_SALES
FROM BOOK B JOIN BOOK_SALES S
ON B.BOOK_ID = S.BOOK_ID AND DATE_FORMAT(S.SALES_DATE, '%Y-%m') = '2022-01'
JOIN AUTHOR A ON B.AUTHOR_ID = A.AUTHOR_ID
GROUP BY B.AUTHOR_ID, B.CATEGORY
ORDER BY 1, 3 DESC
'Algorithm > Programmers SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 취소되지 않은 진료 예약 조회하기 (1) | 2024.09.18 |
---|---|
[MySQL] 프로그래머스 주문량이 많은 아이스크림들 조회하기 (1) | 2024.09.18 |
[MySQL] 프로그래머스 자동차 대여 기록 별 대여 금액 구하기 (1) | 2024.09.18 |
[MySQL] 프로그래머스 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.09.18 |
[MySQL] 프로그래머스 FrontEnd 개발자 찾기 (1) | 2024.09.18 |