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 BY 에 CATEGORY 를 적용하고,
위에서 구한 도서 별 판매량의 합을 계속 더해나간다.
결론은
도서 별 판매량 합산 -> 합산된 결과를 가지고 카테고리 별 합산
이 될 것이다.
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
더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗