SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค level 3] ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋„์„œ ํŒ๋งค๋Ÿ‰ ์ง‘๊ณ„ํ•˜๊ธฐ

1eehyunji 2023. 7. 11. 02:08

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์–ด๋А ํ•œ ์„œ์ ์—์„œ ํŒ๋งค์ค‘์ธ ๋„์„œ๋“ค์˜ ๋„์„œ ์ •๋ณด(BOOK), ํŒ๋งค ์ •๋ณด(BOOK_SALES) ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

BOOK ํ…Œ์ด๋ธ”์€ ๊ฐ ๋„์„œ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

Column nameTypeNullableDescription

BOOK_ID INTEGER FALSE ๋„์„œ ID
CATEGORY VARCHAR(N) FALSE ์นดํ…Œ๊ณ ๋ฆฌ (๊ฒฝ์ œ, ์ธ๋ฌธ, ์†Œ์„ค, ์ƒํ™œ, ๊ธฐ์ˆ )
AUTHOR_ID INTEGER FALSE ์ €์ž ID
PRICE INTEGER FALSE ํŒ๋งค๊ฐ€ (์›)
PUBLISHED_DATE DATE FALSE ์ถœํŒ์ผ

BOOK_SALES ํ…Œ์ด๋ธ”์€ ๊ฐ ๋„์„œ์˜ ๋‚ ์งœ ๋ณ„ ํŒ๋งค๋Ÿ‰ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

Column nameTypeNullableDescription

BOOK_ID INTEGER FALSE ๋„์„œ ID
SALES_DATE DATE FALSE ํŒ๋งค์ผ
SALES INTEGER FALSE ํŒ๋งค๋Ÿ‰

๋ฌธ์ œ

2022๋…„ 1์›”์˜ ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋„์„œ ํŒ๋งค๋Ÿ‰์„ ํ•ฉ์‚ฐํ•˜๊ณ , ์นดํ…Œ๊ณ ๋ฆฌ(CATEGORY), ์ด ํŒ๋งค๋Ÿ‰(TOTAL_SALES) ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๊ฒฐ๊ณผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋ช…์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œํ’€์ด

SELECT CATEGORY, SUM(SALES) AS TOTAL_SALES FROM BOOK
JOIN BOOK_SALES ON BOOK.BOOK_ID=BOOK_SALES.BOOK_ID
WHERE SALES_DATE LIKE '2022-01%'
GROUP BY CATEGORY
ORDER BY CATEGORY;

์šฐ์„  BOOK_SALES ํ…Œ์ด๋ธ”๊ณผ BOOK ํ…Œ์ด๋ธ”์„ ๊ฐ ํ…Œ์ด๋ธ”์˜ BOOK_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ JOINํ–ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์™€์ผ๋“œ ์นด๋“œ๋ฅผ ์ด์šฉํ•ด์„œ SALES_DATE๊ฐ€ '2022-01'๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ–ˆ๋‹ค. 

๊ทธ ํ›„์— ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ GROUP BY๋ฅผ ํ•ด์ฃผ๊ณ , GROUP BY๋œ ํ…Œ์ด๋ธ”์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„๊ณผ ๊ฐ ๊ทธ๋ฃน๋ณ„(์นดํ…Œ๊ณ ๋ฆฌ๋ณ„)๋กœ ํŒ๋งค๋Ÿ‰์„ ๋ชจ๋‘ ํ•ฉํ•œ ๊ฐ’์„ ์ถ”์ถœํ–ˆ๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ–ˆ๋‹ค.