Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- eda
- SQL
- 프로그래머스
- Inventory Optimization
- TensorFlowGPU
- 파이썬
- 신경쓰기의 기술
- 웨어하우스 보관 최적화
- MySQL
- 데이터분석
- oracle
- Gaimification
- 코딩테스트
- forecast
- SKU Consolidation
- 코딩테스트연습
- ABC Analysis
- tensorflow
- MS SQL Server
- kaggle
- 당신의 인생이 왜 힘들지 않아야 한다고 생각하십니까
- Labor Management System
- 피그마인디언
- ProfileReport
- 딥러닝
- ModelCheckPoint
- leetcode
- pandas profiling
- HackerRank
- Product Demand
Archives
- Today
- Total
오늘도 배운다
저자 별 카테고리 별 매출액 집계하기 / 프로그래머스, SQL, MySQL 본문
문제
source: 프로그래머스
2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가
) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.
제출답안(MySQL)
WITH
sales_jan2022 AS
(SELECT book_id, SUM(sales) AS qty_jan2022
FROM book_sales
WHERE DATE_FORMAT(sales_date, '%Y-%m') = '2022-01'
GROUP BY book_id),
ls_book_n_author AS
(SELECT
b.author_id,
author_name,
category,
book_id,
price
FROM
book AS b
LEFT JOIN author AS a on b.author_id = a.author_id
)
SELECT
ba.author_id,
author_name,
category,
IFNULL(SUM(price*qty_jan2022), 0) AS total_sales
FROM
ls_book_n_author AS ba
LEFT JOIN sales_jan2022 AS s_jan ON ba.book_id = s_jan.book_id
GROUP BY
ba.author_id, author_name, category
ORDER BY
author_id, category DESC
풀이(MySQL)
더보기
2022년 1월 세일즈 데이터 CTE
WITH
sales_jan2022 AS
(SELECT book_id, SUM(sales) AS qty_jan2022
FROM book_sales
WHERE DATE_FORMAT(sales_date, '%Y-%m') = '2022-01'
GROUP BY book_id)
Author_id 와 author_name 데이터 CTE
ls_book_n_author AS
(SELECT
b.author_id,
author_name,
category,
book_id,
price
FROM
book AS b
LEFT JOIN author AS a on b.author_id = a.author_id
)
author/book 테이블과 세일즈 테이블을 결합 후 저자, 저자 이름, 카테고리별 그룹화
SELECT
ba.author_id,
author_name,
category,
IFNULL(SUM(price*qty_jan2022), 0) AS total_sales
FROM
ls_book_n_author AS ba
LEFT JOIN sales_jan2022 AS s_jan ON ba.book_id = s_jan.book_id
GROUP BY
ba.author_id, author_name, category
ORDER BY
author_id, category DESC
>> 세일즈가 없는 책/저자가 있는 경우에 대비하여 IFNULL로 예외처리
문제 바로가기(MySQL)
728x90
'코딩테스트연습(SQL)' 카테고리의 다른 글
특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 / 프로그래머스, SQL, MySQL (0) | 2023.03.28 |
---|---|
자동차 대여 기록 별 대여 금액 구하기 / 프로그래머스, SQL, MySQL (0) | 2023.03.27 |
카테고리 별 도서 판매량 집계하기 / 프로그래머스, SQL, MySQL (0) | 2023.03.23 |
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 / 프로그래머스, SQL, MySQL (0) | 2023.03.20 |
대여 기록이 존재하는 자동차 리스트 구하기 / 프로그래머스, SQL, MySQL (0) | 2023.03.20 |
Comments