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에 조건을 두 개 이상 사용해본 건 처음이당