728x90
반응형
저자 별 카테고리 별 매출액 집계하기
https://school.programmers.co.kr/learn/courses/30/lessons/144856
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
다음은 어느 한 서점에서 판매 중인 도서들의 정보가 담긴 BOOK
, AUTHOR
, BOOK_SALES
테이블입니다.
- BOOK 테이블: 도서 ID, 카테고리, 저자 ID, 가격, 출판일 정보를 포함
- AUTHOR 테이블: 저자 ID와 저자명을 포함
- BOOK_SALES 테이블: 도서별 날짜별 판매량 정보 포함
2022년 1월 판매 데이터를 기준으로 저자별, 카테고리별 총 매출액(판매량 × 판매가)을 계산하고,
저자 ID, 저자명, 카테고리, 매출액을 출력하세요.
결과는 저자 ID 오름차순, 같은 저자 ID 내에서는 카테고리 내림차순으로 정렬해야 합니다.
테이블 구조 예시
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 |
AUTHOR_ID | AUTHOR_NAME |
---|---|
1 | 홍길동 |
2 | 김영호 |
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 |
예시 설명
- 도서 ID 1: 총 판매량 3권 (2 + 1), 가격 10,000원 → 매출 30,000원
- 도서 ID 2: 총 판매량 14권 (3 + 5 + 6), 가격 9,000원 → 매출 126,000원
- 도서 ID 3: 총 판매량 2권, 가격 9,000원 → 매출 18,000원
이를 저자와 카테고리별로 집계하면 다음과 같습니다:
AUTHOR_ID | AUTHOR_NAME | CATEGORY | TOTAL_SALES |
---|---|---|---|
1 | 홍길동 | 인문 | 30000 |
1 | 홍길동 | 경제 | 126000 |
2 | 김영호 | 경제 | 18000 |
SQL 쿼리
SELECT
B.AUTHOR_ID,
C.AUTHOR_NAME,
B.CATEGORY,
SUM(B.PRICE * A.SALES_SUM) AS TOTAL_SALES
FROM (
-- 2022년 1월 판매량을 BOOK_ID별로 합산
SELECT BOOK_ID, SUM(SALES) AS SALES_SUM
FROM BOOK_SALES
WHERE SALES_DATE >= '2022-01-01' AND SALES_DATE < '2022-02-01'
GROUP BY BOOK_ID
) A
JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID
JOIN AUTHOR C ON B.AUTHOR_ID = C.AUTHOR_ID
GROUP BY B.AUTHOR_ID, C.AUTHOR_NAME, B.CATEGORY
ORDER BY B.AUTHOR_ID ASC, B.CATEGORY DESC;
쿼리 설명
BOOK_SALES
테이블에서 2022년 1월 판매량만 필터링하여, 도서별 총 판매량(SALES_SUM
)을 계산합니다.- 이렇게 계산한 도서별 판매량을
BOOK
테이블과 조인하여, 도서 가격과 저자 정보를 가져옵니다. AUTHOR
테이블과 조인하여 저자명을 얻습니다.- 저자 ID, 저자명, 도서 카테고리별로 그룹화하여,
판매량 × 가격
을 합산한 매출액(TOTAL_SALES
)을 계산합니다. - 결과는 저자 ID 오름차순, 같은 저자 내에서는 카테고리 내림차순으로 정렬합니다.
728x90
반응형
'MYSQL' 카테고리의 다른 글
[프로그래머스 LV.04] MYSQL 서울에 위치한 식당 목록 출력하기 (0) | 2025.05.19 |
---|---|
[프로그래머스 LV.04] MYSQL 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2025.05.19 |
[프로그래머스 LV.04] MYSQL 취소되지 않은 흉부외과 진료 예약 조회하기 (0) | 2025.05.19 |
[프로그래머스 LV.04] MYSQL 5월 식품들의 총매출 조회하기 (0) | 2025.05.19 |
[프로그래머스 LV.04] MYSQL 식품분류별 가장 비싼 정보 조회하기 🍪🍲 (0) | 2025.05.19 |
댓글