[ํ๋ก๊ทธ๋๋จธ์ค level 4] ์ ์ ๋ณ ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋งค์ถ์ก ์ง๊ณํ๊ธฐ
๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ํ ์์ ์์ ํ๋งค์ค์ธ ๋์๋ค์ ๋์ ์ ๋ณด(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๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.