๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ํ ์์ ์์ ํ๋งค์ค์ธ ๋์๋ค์ ๋์ ์ ๋ณด(BOOK), ํ๋งค ์ ๋ณด(BOOK_SALES) ํ ์ด๋ธ์ ๋๋ค.
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 | ์ถํ์ผ |
BOOK_SALES ํ ์ด๋ธ์ ๊ฐ ๋์์ ๋ ์ง ๋ณ ํ๋งค๋ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ๋ก ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ต๋๋ค.
Column name | Type | Nullable | Description |
BOOK_ID | INTEGER | FALSE | ๋์ ID |
SALES_DATE | DATE | FALSE | ํ๋งค์ผ |
SALES | INTEGER | FALSE | ํ๋งค๋ |
๋ฌธ์
2022๋ 1์์ ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋์ ํ๋งค๋์ ํฉ์ฐํ๊ณ , ์นดํ ๊ณ ๋ฆฌ(CATEGORY), ์ด ํ๋งค๋(TOTAL_SALES) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์นดํ ๊ณ ๋ฆฌ๋ช ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
2022๋ 1์์ ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋์ ํ๋งค๋์ ํฉ์ฐํ๊ณ , > ํ๋งค์๋ณ ์ง๊ณํจ์ ๊ทธ๋ฃนํ
> ๋ฌธ์ ์์์ ๋ ์ง ์กฐ๊ฑด์ DATE_FORMAT()ํจ์๋ ํน์ ๋ฌธ์๋ฅผ ํฌํจํ๋ ๋ฌธ์์ด ์ถ์ถ LIKE๋ก ์กฐ๊ฑด ๋ถ์ฌ
์นดํ ๊ณ ๋ฆฌ(CATEGORY), ์ด ํ๋งค๋(TOTAL_SALES) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅ > ๊ทธ๋ฃนํ ์ ์ ์นดํ ๊ณ ๋ฆฌ(CATEGORY) ์ ๋ณด๋ BOOKํ ์ด๋ธ์ ์๊ณ , ํ๋งค๋(SALES) ์ ๋ณด๋ BOOK_SALESํ ์ด๋ธ์ ์์ผ๋ฏ๋ก ๊ณตํต ์ปฌ๋ผ(BOOK_ID)๋ฅผ ๊ธฐ์ค์ผ๋ก JOIN ํด์ฃผ์ด์ผ ํจ.
๊ฒฐ๊ณผ๋ ์นดํ ๊ณ ๋ฆฌ๋ช ์ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ๊ธฐ์ค1
SELECT BO.CATEGORY, SUM(BS.SALES) AS TOTAL_SALES
FROM BOOK BO
INNER JOIN BOOK_SALES BS
ON BO.BOOK_ID = BS.BOOK_ID
WHERE BS.SALES_DATE LIKE '2022-01-%'
GROUP BY 1
ORDER BY 1
* WHERE์ ์ ํ๋งค์ผ ์กฐ๊ฑด์ WHERE DATE_FORMAT(BS.SALES_DATE, '%Y-%m-%d') LIKE '2022-01-%' ๋ ๊ฐ๋ฅํ๋ค.