반응형
테이블 정보
1. BOOK
Column name | Type | Nullable | Description |
BOOK_ID | INTEGER | FALSE | 도서 ID |
CATEGORY | VARCHAR(N) | FALSE | 카테고리 (경제, 인문, 소설, 생활, 기술) |
AUTHOR_ID | INTEGER | FALSE | 저자 ID |
PRICE | INTEGER | FALSE | 판매가 (원) |
PUBLISHED_DATE | DATE | FALSE | 출판일 |
2. BOOK_SALES
Column name | Type | Nullable | Description |
BOOK_ID | INTEGER | FALSE | 도서 ID |
SALES_DATE | DATE | FALSE | 판매일 |
SALES | INTEGER | FALSE | 판매량 |
예시 테이블
1. BOOK
BOOK_ID | CATEGORY | AUTHOR_ID | PRICE | PUBLISHED_DATE |
1 | 인문 | 1 | 10000 | 2020-01-01 |
2 | 경제 | 1 | 9000 | 2021-02-05 |
3 | 경제 | 2 | 9000 | 2021-03-11 |
2. BOOK_SALES
BOOK_ID | SALES_DATE | SALES |
1 | 2022-01-01 | 2 |
2 | 2022-01-02 | 3 |
1 | 2022-01-05 | 1 |
2 | 2022-01-20 | 5 |
2 | 2022-01-21 | 6 |
3 | 2022-01-22 | 2 |
2 | 2022-02-11 | 3 |
출력 기대값
CATEGORY | TOTAL_SALES |
경제 | 16 |
인문 | 3 |
문제
2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 카테고리명을 기준으로 오름차순 정렬해주세요.
아이디어
- 총 판매량을 알아야 하므로 BOOK_SALES로 서브쿼리를 만들어 준다.
- WHERE을 통해 2022년 1월의 카테고리 별 도서 판매량을 간추린다.
- GROUP BY를 통해 SALES값을 합산하여 서브쿼리를 제작한다.
- 서브쿼리와 BOOK을 BOOK_ID를 키로 JOIN한다.
- CATEGORY를 기준으로 B의 판매 총량을 SUM하여 출력해 준다.
- 카테고리를 기준으로 오름차순 정렬해 준다.
정답
SELECT A.CATEGORY, SUM(B.TOTAL) AS TOTAL_SALES
FROM BOOK A
INNER JOIN (
SELECT BOOK_ID, SALES_DATE, SUM(SALES) AS TOTAL
FROM BOOK_SALES
WHERE TO_CHAR(SALES_DATE, 'YYYYMM') = '202201'
GROUP BY BOOK_ID, SALES_DATE, SALES
) B
ON A.BOOK_ID = B.BOOK_ID
GROUP BY A.CATEGORY
ORDER BY 1
참고사항
GROUP BY를 총 두번 써주었다.
728x90
반응형
'알고리즘 공부 > SQL' 카테고리의 다른 글
[L4] 프로그래머스 MYSQL FrontEnd 개발자 찾기 (0) | 2024.10.18 |
---|---|
[L4] 프로그래머스 ORACLE 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2024.10.18 |
[L4] 프로그래머스 ORACLE 주문량이 많은 아이스크림들 조회하기 (1) | 2024.10.18 |
[L4] 프로그래머스 ORACLE 5월 식품들의 총매출 조회하기 (0) | 2024.10.18 |
[L3] 프로그래머스 ORACLE, MYSQL 오랜 기간 보호한 동물(1) (1) | 2024.10.18 |