DataBase/MySQL
[프로그래머스] 저자 별 카테고리 별 매출액 집계하기 - MySQL
Dev_en
2023. 2. 13. 02:38
문제 설명
BOOK, BOOK_SALES, AUTHOR 테이블의 데이터를 이용해 저자, ID, 저자명, 카테고리, 저자 별 카테고리 별 매출액을 구하고, 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해 출력하는 문제
https://school.programmers.co.kr/learn/courses/30/lessons/144856
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 알고리즘 분류 - GROUP BY
- 난이도 - Level 4
접근 방법
판매량, 작가 정보, 카테고리 모두 책의 ID와 관련이 있으므로, 책을 ID별로 다루기 편하도록 BOOK과 BOOK_SALES 테이블을 조인해 하나로 합쳤고, 그 과정에서 2022년도 1월 판매된 책 데이터만 남기도록 했다.
이 과정만 좀 복잡했고, 그 후는 단순하게 문제 조건대로 저자 별, 카테고리 별 매출액을 집계하기 위해 GROUP BY 조건으로 저자 ID, 책 카테고리를 사용했다.
답안 코드
SELECT AUTHOR.AUTHOR_ID, AUTHOR.AUTHOR_NAME, B.CATEGORY, SUM(B.SALES * B.PRICE) AS TOTAL_SALES
FROM (SELECT BOOK_SALES.BOOK_ID, BOOK_SALES.SALES_DATE, BOOK_SALES.SALES, BOOK.CATEGORY, BOOK.AUTHOR_ID, BOOK.PRICE FROM BOOK, BOOK_SALES WHERE BOOK.BOOK_ID = BOOK_SALES.BOOK_ID AND YEAR(BOOK_SALES.SALES_DATE) = '2022' AND MONTH(BOOK_SALES.SALES_DATE) = '1' ORDER BY BOOK.BOOK_ID) B, AUTHOR
WHERE AUTHOR.AUTHOR_ID = B.AUTHOR_ID
GROUP BY AUTHOR.AUTHOR_ID, BOOK.CATEGORY
ORDER BY AUTHOR.AUTHOR_ID, B.CATEGORY DESC
GROUP BY에 조건을 두 개 이상 사용해본 건 처음이당