IT/프로그래머스 - SQL

[programmers/oracle] 프로그래머스 GROUP BY 저자 별 카테고리 별 매출액 집계하기

나콘 2023. 7. 5. 15:33

 

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

 

문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/144856

 

 

 


내가 풀어본 오라클 정답 
SELECT A.AUTHOR_ID, C.AUTHOR_NAME, A.CATEGORY, SUM(A.PRICE * B.SALES) AS TOTAL_SALES 
FROM BOOK A, (SELECT * FROM BOOK_SALES 
WHERE TO_CHAR(SALES_DATE,'YYYY-MM') IN ('2022-01')) B, AUTHOR C
WHERE A.BOOK_ID =B.BOOK_ID
AND A.AUTHOR_ID = C.AUTHOR_ID
GROUP BY A.CATEGORY,A.AUTHOR_ID,C.AUTHOR_NAME
ORDER BY A.AUTHOR_ID ASC ,A.CATEGORY DESC

 

GROUP BY 개념이 늘 헷갈렸는데 GROUP BY 는 집계함수(SUM)을 꼭 같이 써야 한다는걸 잊지 않기 

 

 

 


정리 

1.문제를 먼저 쪼개서 접근하기 

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

 

 

2.제일먼저 2022년 1월이라는 조건이 맨앞에 있어  이 조건의 데이터를 테이블 B로 만듬  

(SELECT *
FROM BOOK_SALES 
WHERE TO_CHAR(SALES_DATE,'YYYY-MM') IN ('2022-01')) B

 

 

 

3. 그리고 저자별, 카테고리별 매출액 출력하기

(GROUP BY  사용 , 매출액SUM(A.PRICE * B.SALES) AS TOTAL_SALES 

PRICE는 BOOK 테이블에 있고 SALES는 B테이블에  있기때문에 카테고리별 매출액을 구할려면 조인해서 GROUP BY 로 묶어줘야한다 조인할 키는 BOOK_ID 


SELECT A.CATEGORY, SUM(A.PRICE * B.SALES) AS TOTAL_SALES 

FROM BOOK A, (SELECT * FROM BOOK_SALES 
WHERE TO_CHAR(SALES_DATE,'YYYY-MM') IN ('2022-01')) B
WHERE A.BOOK_ID =B.BOOK_ID
GROUP BY A.CATEGORY

 

 

4. 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 

 

SELECT A.AUTHOR_ID, C.AUTHOR_NAME, A.CATEGORY, SUM(A.PRICE * B.SALES) AS TOTAL_SALES 
FROM BOOK A, (SELECT * FROM BOOK_SALES 
WHERE TO_CHAR(SALES_DATE,'YYYY-MM') IN ('2022-01')) B, AUTHOR C
WHERE A.BOOK_ID =B.BOOK_ID
AND A.AUTHOR_ID = C.AUTHOR_ID
GROUP BY A.CATEGORY,A.AUTHOR_ID,C.AUTHOR_NAME

 

 

 

 

5. 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬

최종

SELECT A.AUTHOR_ID, C.AUTHOR_NAME, A.CATEGORY, SUM(A.PRICE * B.SALES) AS TOTAL_SALES 
FROM BOOK A, (SELECT * FROM BOOK_SALES 
WHERE TO_CHAR(SALES_DATE,'YYYY-MM') IN ('2022-01')) B, AUTHOR C
WHERE A.BOOK_ID =B.BOOK_ID
AND A.AUTHOR_ID = C.AUTHOR_ID
GROUP BY A.CATEGORY,A.AUTHOR_ID,C.AUTHOR_NAME
ORDER BY A.AUTHOR_ID ASC ,A.CATEGORY DESC


 

이렇게 접근하면 됨 끝 - 

반응형