문제를 보고 BOOK_SALES 테이블을 바탕으로
2022년 1월 판매된 BOOK_ID의 판매량 합 테이블을 새로 만들어줬다.
만드는 방법으로는
SELECT BOOK_ID, SUM(SALES) AS SALES
FROM BOOK_SALES
WHERE SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY BOOK_ID
으로 비교적 쉽게 만들 수 있었다.
이렇게 만들어진 테이블과 나머지 2개의 테이블을 3중 JOIN 시켜줬다.
(이전 문제를 바탕으로 학습한 내용 사용)
FROM BOOK AS A INNER JOIN AUTHOR AS B
ON A.AUTHOR_ID = B.AUTHOR_ID
INNER JOIN
(
SELECT BOOK_ID, SUM(SALES) AS SALES
FROM BOOK_SALES
WHERE SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY BOOK_ID
) AS C
ON A.BOOK_ID = C.BOOK_ID
그렇게 만든 결과를 출력하니,
(중요)한 저자가 같은 CATEGORY 책을 2권 쓴 경우가 있었다.
그래서,
GROUP BY B.AUTHOR_NAME, A.CATEGORY
로 한 저자가 같은 CATEGORY 도서를 2권 이상 썼더라도
카테고리에 따른 하나의 그룹 테이블로 만들어줬다.
하나의 그룹 테이블에 2개 이상의 튜플이 존재할 수 있기 때문에
SELECT 문에서는
SUM(A.PRICT * C.SALES) AS TOTAL_SALES로
한 저자가 같은 CATEGORY로 만든 책이 2권 있더라도
2권의 개별 매출액의 합으로 출력되게 만들었다.
제출한 코드 :
SELECT B.AUTHOR_ID, B.AUTHOR_NAME, A.CATEGORY, SUM(A.PRICE * C.SALES) AS TOTAL_SALES
FROM BOOK AS A INNER JOIN AUTHOR AS B
ON A.AUTHOR_ID = B.AUTHOR_ID
INNER JOIN
(
SELECT BOOK_ID, SUM(SALES) AS SALES
FROM BOOK_SALES
WHERE SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY BOOK_ID
) AS C
ON A.BOOK_ID = C.BOOK_ID
GROUP BY B.AUTHOR_NAME, A.CATEGORY
ORDER BY B.AUTHOR_ID ASC, A.CATEGORY DESC
'SQL 문제' 카테고리의 다른 글
문제 69. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기(난이도 10) (0) | 2024.08.01 |
---|---|
문제 67. 주문량이 많은 아이스크림들(난이도 10)(새 테이블 만들어 조회) (0) | 2024.08.01 |
문제 66. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기(난이도 6) (0) | 2024.08.01 |
문제 65. 우유와 요거트가 담긴(난이도 10)(집합 연산자) (0) | 2024.07.30 |
문제 64. 헤비 유저가 소유한 장소2021(난이도3) (0) | 2024.07.30 |