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 |
이렇게 접근하면 됨 끝 -
반응형
'IT > 프로그래머스 - SQL' 카테고리의 다른 글
[programmers/oracle] GROUP BY 진료과별 총 예약 횟수 출력하기 (0) | 2023.07.19 |
---|---|
[programmers/oracle] GROUP BY 카테고리별 도서 판매량 집계하기 (0) | 2023.07.18 |
[programmers/oracle] GROUP BY 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.07.17 |
[programmers/oracle] group by 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.07.17 |
[programmers/oracle] 프로그래머스 GROUP BY 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.07.06 |