SQL 고득점 Kit - 8.18

김동현·2024년 8월 18일

SQL 고득점 Kit

목록 보기
32/56

GROUP BY - 저자 별 카테고리 별 매출액 집계하기

문제

2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.

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

1차 풀이

## 22년 1월 판매된 도서 ID, 판매량
WITH id_sale AS(
    SELECT BOOK_ID, SALES
    FROM BOOK_SALES
    WHERE SALES_DATE LIKE '2022-01%'
),
## 매출액 계산
name AS (
    SELECT AUTHOR_ID, CATEGORY, (SALES * price) TOTAL_SALES 
    FROM BOOK b
    INNER JOIN id_sale i
    ON b.BOOK_ID = i.BOOK_ID
)
## 저자 이름
SELECT n.AUTHOR_ID, AUTHOR_NAME, CATEGORY, TOTAL_SALES 
FROM AUTHOR a  
INNER JOIN name n
ON a.AUTHOR_ID = n.AUTHOR_ID
ORDER BY n.AUTHOR_ID, CATEGORY DESC

리뷰

  • id, category별 그룹의 매출량을 계산한 것이 아닌 각각의 id, category의 모든 매출량을 계산하여 틀렸다.
  • 그것을 알아채는 것이 좀 걸린 것 같음

2차 풀이

## 22년 1월 판매된 도서 ID, 판매량
WITH id_sale AS(
    SELECT BOOK_ID, SALES
    FROM BOOK_SALES
    WHERE SALES_DATE LIKE '2022-01%'
),
## 저자별, 카테고리별, 매출액 계산
name AS (
    SELECT AUTHOR_ID, CATEGORY, (SALES * price) TOTAL_SALES 
    FROM BOOK b
    INNER JOIN id_sale i
    ON b.BOOK_ID = i.BOOK_ID
)

## id, category 그룹화하여 전체 매출량 계산
SELECT a.AUTHOR_ID, AUTHOR_NAME, CATEGORY, SUM(TOTAL_SALES) TOTAL_SALES
FROM AUTHOR a  
INNER JOIN name n
ON a.AUTHOR_ID = n.AUTHOR_ID
GROUP BY a.AUTHOR_ID, CATEGORY
ORDER BY a.AUTHOR_ID, CATEGORY DESC

리뷰

  • GROUP BY 를 통해 id, category를 그룹화하고 전체 매출량을 SUM 해주니 원하는 조건에 만족하게 되었다.

GitHub

https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/4/144856.%E2%80%85%EC%A0%80%EC%9E%90%E2%80%85%EB%B3%84%E2%80%85%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%E2%80%85%EB%B3%84%E2%80%85%EB%A7%A4%EC%B6%9C%EC%95%A1%E2%80%85%EC%A7%91%EA%B3%84%ED%95%98%EA%B8%B0

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글