๋ฌธ์ œ

๐Ÿ“Œ MySQL ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

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

 

๐Ÿ“Œ ํ…Œ์ด๋ธ” :

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

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

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

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

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

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

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

 


ํ’€์ด

์ถ”์ธก) 

์ผ๋‹จ BOOK_SALES์—์„œ 2022๋…„ 1์›” ์กฐํšŒ๊ฑด ์ˆ˜๋งŒ ์ถœ๋ ฅํ•˜์—ฌ ROW์ˆ˜๋ฅผ ์ค„์ž„

๊ทธ ํŒ๋งค๋‚ด์—ญ์„ ๊ฐ๊ฐ BOOK_ID๋กœ ๊ทธ๋ฃนํ™”ํ•ด ์ฑ…๋งˆ๋‹ค์˜ ํŒ๋งค๊ณ ๋ฅผ ๋จผ์ € ๊ณ„์‚ฐ

 

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์ฑ…์ •๋ณด์™€ ์ž‘๊ฐ€ ์ •๋ณด๋ฅผ INNNER JOINํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜๋ฉด ํšจ์œจ์ ์ผ ๋“ฏ ํ•˜๋‹ค.

 

๋˜, ์ „์— ๋ดค๋˜ ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ํ•œ๋ฒˆ ์ ์šฉํ•ด๋ณด๋ฉด ์ข‹์„์ง€๋„!

 

์ฟผ๋ฆฌ) 

* 1์ฐจ) 

WITH S AS 
(
    SELECT BOOK_ID, SUM(SALES) AS SALES
    FROM BOOK_SALES 
    WHERE SALES_DATE LIKE '2022-01%'
    GROUP BY BOOK_ID
)

SELECT A.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY, SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM S
INNER JOIN BOOK AS B ON B.BOOK_ID = S.BOOK_ID
INNER JOIN AUTHOR AS A ON A.AUTHOR_ID = B.AUTHOR_ID
GROUP BY A.AUTHOR_ID, B.CATEGORY
ORDER BY A.AUTHOR_ID ASC, B.CATEGORY DESC

 

๋ฆฌ๋ทฐ) 

๋ฏธ๋ฆฌ ํ…Œ์ด๋ธ”์„ ์ž„์‹œ๋กœ ๋งŒ๋“ค์–ด ๋‘ ์œผ๋กœ์จ ๊ฐ€๋…์„ฑ์ด ๊ต‰์žฅํžˆ ์ข‹์•„์กŒ๋‹ค. 

๊ทผ๋ฐ ์ž„์‹œ ํ…Œ์ด๋ธ”์ด ์„ฑ๋Šฅ์ ์œผ๋กœ๋Š” ๊ธฐ์กด์— FROM์•ˆ์— ์“ฐ๋Š” ๊ฒƒ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ ์‹ถ์–ด ์ฐพ์•„๋ณด๋‹ˆ

์ด ์ž„์‹œํ…Œ์ด๋ธ”์€ temp๋ผ๋Š” ์ž„์‹œ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”์ผ ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ์˜ค๋ฒ„ํ—ค๋“œ ์š”์†Œ!

์ž„์‹œํ…Œ์ด๋ธ”์„ ์“ฐ๋Š” ๊ฒƒ์€ ๋™์ผํ•œ SQL์ด ๋ฐ˜๋ณต๋˜์–ด์„œ ์‚ฌ์šฉ๋  ๋•Œ ์„ฑ๋Šฅ์„ ๋†’์ผ์ˆ˜ ์žˆ๋‹ค.

์ด ์ ์„ ๊ธฐ์–ตํ•ด์„œ ์‚ฌ์šฉํ•˜์ž!

+ Recent posts