SQL

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

1eehyunji 2023. 7. 14. 15:18

๋ฌธ์ œ ์„ค๋ช…

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

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

Column nameTypeNullableDescription

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

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

Column nameTypeNullableDescription

AUTHOR_ID INTEGER FALSE ์ €์ž ID
AUTHOR_NAME VARCHAR(N) FALSE ์ €์ž๋ช…

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

Column nameTypeNullableDescription

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

๋ฌธ์ œ

2022๋…„ 1์›”์˜ ๋„์„œ ํŒ๋งค ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ €์ž ๋ณ„, ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋งค์ถœ์•ก(TOTAL_SALES = ํŒ๋งค๋Ÿ‰ * ํŒ๋งค๊ฐ€) ์„ ๊ตฌํ•˜์—ฌ, ์ €์ž ID(AUTHOR_ID), ์ €์ž๋ช…(AUTHOR_NAME), ์นดํ…Œ๊ณ ๋ฆฌ(CATEGORY), ๋งค์ถœ์•ก(SALES) ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๊ฒฐ๊ณผ๋Š” ์ €์ž ID๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ, ์ €์ž ID๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œ ํ’€์ด

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

JOIN์„ 2๋ฒˆ ํ•ด์ค˜์•ผ ํ–ˆ๋‹ค. ์ฒ˜์Œ์— BOOK ํ…Œ์ด๋ธ”๊ณผ BOOK_SALES ํ…Œ์ด๋ธ”์„ BOOK_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ joinํ•ด์ฃผ๊ณ , 

์ด ํ…Œ์ด๋ธ”์„ AUTHOR ํ…Œ์ด๋ธ”๊ณผ AUTHOR_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ๋ฒˆ ๋” ์กฐ์ธํ•ด์คฌ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  WHERE...LIKE..๋ฌธ์„ ์ด์šฉํ•ด์„œ 2022๋…„ 1์›”์˜ ํŒ๋งค ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ–ˆ๋‹ค. 

์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ๋ฅผ AUTHOR_ID์™€ CATEGORY๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ–ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ ์ค‘ AUTHOR_ID, AUTHOR_NAME, CATEGORY, ํŒ๋งค๋Ÿ‰*ํŒ๋งค์•ก์„ ๊ณฑํ•œ ๊ฐ’์„ ๊ฐ ๊ทธ๋ฃน๋ณ„๋กœ ๋”ํ•œ TOTAL_SALES๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, AUTHOR_ID ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ,  CATEGORY๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ๋‹ค.