[프로그래머스/MySQL] 카테고리 별 도서 판매량 집계하기

지누초이·2024년 3월 28일

프로그래머스

목록 보기
28/37
post-thumbnail

문제

https://school.programmers.co.kr/learn/courses/30/lessons/144855


노트

복잡한 문제는 세부 단계로 쪼갠 뒤,
주어진 테이블에서 조합할 수 있는 정보를 통해 단계적으로 풀어나가면 할만하다.

우선 첫 번째 문제는

2022년 1월의 카테고리 별 도서 판매량을 합산

이다.

카테고리 별로 나누기위해선 도서 별 판매량을 알아야한다.
도서 : 카테고리 의 맵핑 정보를 갖고있으므로
일단 도서 별 판매량을 알면 나중에 카테고리 별로 더해줄 수 있을 것이다.

그러면 일단 다음 문제를 풀어보자.

2022년 1월의 도서 별 판매량을 합산

SELECT
	BOOK_ID
	, SUM(SALES) AS SALES
FROM
	BOOK_SALES
WHERE
	YEAR(SALES_DATE) = 2022
	AND MONTH(SALES_DATE) = 1
GROUP BY
	BOOK_ID 

GROUP BY 를 통해 도서 별, WHERE 를 통해 2022년 1월 추출했다.
이제 위 테이블을 조인하여 카테고리 별로 나누면 된다.

SELECT
    CATEGORY
    , SUM(A.SALES) TOTAL_SALES
FROM
    BOOK_SALES A
    , BOOK B
WHERE
    A.BOOK_ID = B.BOOK_ID
GROUP BY
    CATEGORY    
ORDER BY
    CATEGORY

도서 : 카테고리에 대한 맵핑 정보는 BOOK 테이블에 있다.
카테고리 별로 그룹해야하므로 GROUP BYCATEGORY 를 적용하고,
위에서 구한 도서 별 판매량의 합을 계속 더해나간다.


결론은

도서 별 판매량 합산 -> 합산된 결과를 가지고 카테고리 별 합산

이 될 것이다.


정답

WITH BOOK_SALES AS (
    SELECT
        BOOK_ID
        , SUM(SALES) AS SALES
    FROM
        BOOK_SALES
    WHERE
        YEAR(SALES_DATE) = 2022
        AND MONTH(SALES_DATE) = 1
    GROUP BY
        BOOK_ID        
)

SELECT
    CATEGORY
    , SUM(A.SALES) TOTAL_SALES
FROM
    BOOK_SALES A
    , BOOK B
WHERE
    A.BOOK_ID = B.BOOK_ID
GROUP BY
    CATEGORY    
ORDER BY
    CATEGORY

더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗

0개의 댓글