본문 바로가기

TIL

240801 TIL

SQL

더보기

[문제]

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

내가 접근 했던 방식

 

1) 2022년 1월에 판매된 데이터를 조회한다

2) 총 판매량을 구한다

3) 원하는 항목들을 조회하고 정렬 한다.

 

 

1) 2022년 1월에 판매된 데이터를 조회한다.

SELECT  book_id,
        sales
from book_sales
where date_format(sales_date,'%Y-%m')='2022-01'

 

이것을 기반으로 하여 book 테이블과 book_id를 키로 하여 join을 실시하였다.

select a.book_id,
        sum(a.sales * b.price) TOTAL_SALES,
        b.category,
        b.author_id
from
(
SELECT  book_id,
        sales
from book_sales
where date_format(sales_date,'%Y-%m')='2022-01'
) a left join book b on a.book_id=b.book_id
group by 4, 3

 

이것을 기반으로 author 테이블과 authou_id 로 join 하여 작가의 아이디와 이름을 가져 온다.

select c.author_id AUTHOR_ID,
        d.author_name AUTHOR_NAME,
        c.category CATEGORY,
        c.total_sales TOTAL_SALES
from
(
select a.book_id,
        sum(a.sales * b.price) TOTAL_SALES,
        b.category,
        b.author_id
from
(
SELECT  book_id,
        sales
from book_sales
where date_format(sales_date,'%Y-%m')='2022-01'
) a left join book b on a.book_id=b.book_id
group by 4, 3
) c left join author d on c.author_id=d.author_id
order by 1 asc, 3 desc

 

 

join의 join의 join 이라 머리가 좀 아팠지만

 

순서대로 차근차근 읽어나간다면 충분히 작성하고 이해할 수 있는 코드 인듯 하다!

 

 

 


파이썬과 통계학

'TIL' 카테고리의 다른 글

240805 TIL  (0) 2024.08.05
240802 TIL (SQL With, 통계 분포에 대해)  (0) 2024.08.02
240725 팀프로젝트 2일차  (0) 2024.07.25
240724 SQL 및 팀프로젝트 진행  (1) 2024.07.24
240723 TIL (파이썬 Pandas)  (0) 2024.07.23