โ๏ธ ๋ฌธ์ ์ค๋ช
USED_GOODS_BOARD์ USED_GOODS_USER ํ ์ด๋ธ์์ ์๋ฃ๋ ์ค๊ณ ๊ฑฐ๋์ ์ด๊ธ์ก์ด 70๋ง ์ ์ด์์ธ ์ฌ๋์ ํ์ ID, ๋๋ค์, ์ด๊ฑฐ๋๊ธ์ก์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์ด๊ฑฐ๋๊ธ์ก์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
https://school.programmers.co.kr/learn/courses/30/lessons/164668
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
โ๏ธ ๋ฌธ์ ํด์
1. USED_GOODS_BOARD์ USED_GOODS_USER ํ ์ด๋ธ JOIN
2. ์๋ฃ๋ ์ค๊ณ ๊ฑฐ๋๋ง ํํฐ๋ง
3. ์ด๊ฑฐ๋๊ธ์ก 70๋ง์ ์ด์์ธ ํ์ ์กฐํ
4. ๊ฒฐ๊ณผ๋ ์ด๊ฑฐ๋๊ธ์ก์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
โ๏ธ ์์ฑ ์ฝ๋
SELECT B.WRITER_ID, U.NICKNAME, SUM(B.PRICE) TOTAL_PRICE
FROM USED_GOODS_BOARD B LEFT JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
WHERE B.STATUS = 'DONE'
GROUP BY B.WRITER_ID
HAVING SUM(B.PRICE)>=700000
ORDER BY TOTAL_PRICE
โ๏ธ ์ฝ๋ ํ์ด
1. USED_GOODS_BOARD์ USED_GOODS_USER ํ ์ด๋ธ JOIN
FROM USED_GOODS_BOARD B LEFT JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
์์ฑ์ID์ ํ์ID๋ก JOINํ๋ค. ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ ๋ณด์ ๋ํ ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ๋ชจ๋ ํ์ํ๋ฏ๋ก LEFT JOIN์ผ๋ก ์ฐ๊ฒฐํ๋ค.
2. ์๋ฃ๋ ์ค๊ณ ๊ฑฐ๋๋ง ํํฐ๋ง
WHERE B.STATUS = 'DONE'
3. ์ด๊ฑฐ๋๊ธ์ก 70๋ง์ ์ด์์ธ ํ์ ์กฐํ
GROUP BY B.WRITER_ID
HAVING SUM(B.PRICE)>=700000
์์ฑ์ ID๋ณ๋ก ๊ทธ๋ฃนํ๋ฅผ ํ๋ค.
๊ทธ๋ฃนํจ์์ ๊ฒฐ๊ณผ์ 70๋ง์ ์ด์์ด๋ผ๋ ์กฐ๊ฑด์ ์ฃผ์ด์ผ ํจ์ผ๋ก HAVING์ ์ ์ฌ์ฉํ๋ค.
4. ๊ฒฐ๊ณผ๋ ์ด๊ฑฐ๋๊ธ์ก์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
ORDER BY TOTAL_PRICE
โ๏ธ ์คํ ๊ฒฐ๊ณผ
โ๏ธ ๋ฒ์ธ
โ๏ธ SQL ๋ฌธ๋ฒ ์์ฑ ์์
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
โ๏ธ SQL ์ฟผ๋ฆฌ ์คํ ์์
์คํ ์์ | ๋ด์ฉ |
FROM | ์กฐํ ํ ์ด๋ธ์ ๊ฒฐ์ ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ JOIN์ ์ํํ๋ค. |
WHERE | ์กฐ๊ฑด์ ๋ง๋ ํ(row)๋ง ํํฐ๋งํ๋ค. |
GROUP BY | ์ปฌ๋ผ์ ํน์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ ํ๋ค. |
HAVING | WHERE๊ณผ ์ ์ฌํ์ง๋ง, GROUP BY๋ ์ดํ์ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ์ค ์ ์๋ค. |
SELECT | ๋ชจ๋ ์กฐ๊ฑด์ ์ฒ๋ฆฌํ ํ, ๋จ์ ๋ฐ์ดํฐ ์ค ์ด๋ค ์ด(column)์ ์ถ๋ ฅํ ์ง ์ ํํ๋ค. |
ORDER BY | ๋ชจ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ค. |
๋ฌธ๋ฒ ์์ฑ ์์์ ์ค์ ์คํ ์์๋ ๋ค๋ฅด๋ค! (SELECT์ ์ด ORDER BY ์ ์ ์คํ๋๋ค)
GROUP ์ ์ ์กฐ๊ฑด์ ์ค ๋๋ HAVING์ ์ฌ์ฉํ๋ค๋ ์ ์ ๊ธฐ์ตํด์ผ ํ๋ค.
WHERE์ ๊ทธ๋ฃนํ ์ , HAVING์ ๊ทธ๋ฃนํ ํ!