1) ๋ฌธ์ ์ค๋ช
- ๋ค์์ ์ด๋ ํ ์์ ์์ ํ๋งค์ค์ธ ๋์๋ค์ ๋์ ์ ๋ณด(BOOK), ์ ์ ์ ๋ณด(AUTHOR) ํ ์ด๋ธ์ ๋๋ค.
- 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 | ์ถํ์ผ |
- AUTHOR ํ ์ด๋ธ์ ๋์์ ์ ์์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ๋ก ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ต๋๋ค.
Column name | Type | Nullable | Description |
AUTHOR_ID | INTEGER | FALSE | ์ ์ ID |
AUTHOR_NAME | VARCHAR(N) | FALSE | ์ ์๋ช |
- BOOK_SALES ํ ์ด๋ธ์ ๊ฐ ๋์์ ๋ ์ง ๋ณ ํ๋งค๋ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ๋ก ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ต๋๋ค.
Column name | Type | Nullable | Description |
BOOK_ID | INTEGER | FALSE | ๋์ ID |
SALES_DATE | DATE | FALSE | ํ๋งค์ผ |
SALES | INTEGER | FALSE | ํ๋งค๋ |
2) ๋ฌธ์
- 2022๋ 1์์ ๋์ ํ๋งค ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ ๋ณ, ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋งค์ถ์ก(TOTAL_SALES = ํ๋งค๋ * ํ๋งค๊ฐ) ์ ๊ตฌํ์ฌ, ์ ์ ID(AUTHOR_ID), ์ ์๋ช (AUTHOR_NAME), ์นดํ ๊ณ ๋ฆฌ(CATEGORY), ๋งค์ถ์ก(SALES) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
- ๊ฒฐ๊ณผ๋ ์ ์ ID๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก, ์ ์ ID๊ฐ ๊ฐ๋ค๋ฉด ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
3) ์์
- ์๋ฅผ ๋ค์ด BOOK ํ ์ด๋ธ๊ณผ AUTHOR ํ ์ด๋ธ, BOOK_SALES ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด
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 |
- 2022๋ 1์์ ๋์ ๋ณ ์ด ๋งค์ถ์ก์ ๋์ ID ๊ฐ 1 ์ธ ๋์๊ฐ ์ด 3๊ถ * 10,000์ = 30,000์, ๋์ ID ๊ฐ 2 ์ธ ๋์๊ฐ ์ด 14๊ถ * 9,000 = 126,000์ ์ด๊ณ , ๋์ ID ๊ฐ 3 ์ธ ๋์๊ฐ ์ด 2๊ถ * 9,000 = 18,000์ ์ ๋๋ค.
- ์ ์ ๋ณ ์นดํ ๊ณ ๋ฆฌ ๋ณ๋ก ๋งค์ถ์ก์ ์ง๊ณํ๋ฉด ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
AUTHOR_ID | AUTHOR_NAME | CATEGORY | TOTAL_SALES |
1 | ํ๊ธธ๋ | ์ธ๋ฌธ | 30000 |
1 | ํ๊ธธ๋ | ๊ฒฝ์ | 126000 |
2 | ๊น์ํธ | ๊ฒฝ์ | 18000 |
- ๊ทธ๋ฆฌ๊ณ ์ ์ ID, ์นดํ ๊ณ ๋ฆฌ ์์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์ผ ํฉ๋๋ค.
AUTHOR_ID | AUTHOR_NAME | CATEGORY | TOTAL_SALES |
1 | ํ๊ธธ๋ | ์ธ๋ฌธ | 30000 |
1 | ํ๊ธธ๋ | ๊ฒฝ์ | 126000 |
2 | ๊น์ํธ | ๊ฒฝ์ | 18000 |
4) ํ์ด
SELECT b.AUTHOR_ID
, a.AUTHOR_NAME
, b.CATEGORY
, SUM(PRICE * SALES) AS "TOTAL_SALES"
FROM BOOK b
INNER JOIN (SELECT BOOK_ID, SUM(SALES) AS "SALES"
FROM BOOK_SALES
WHERE DATE_FORMAT(SALES_DATE, '%Y-%m') = '2022-01'
GROUP BY BOOK_ID) s
ON b.BOOK_ID = s.BOOK_ID
INNER JOIN AUTHOR a
ON b.AUTHOR_ID = a.AUTHOR_ID
GROUP BY b.AUTHOR_ID, CATEGORY
ORDER BY 1 ASC, 3 DESC;
[Reference]
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฐ์ํ