๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
· ๋ณธ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/164668
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ ๋ณด๋ฅผ ๋ด์ USED_GOODS_BOARD ํ
์ด๋ธ๊ณผ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ฒจ๋ถํ์ผ ์ ๋ณด(์์ฒด์์ ) ์์ฑ์ ์ ๋ณด๋ฅผ ๋ด์ USED_GOODS_FILE ํ
์ด๋ธ์
๋๋ค.
USED_GOODS_BOARD ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS๋ ๊ฒ์๊ธ ID, ์์ฑ์ ID, ๊ฒ์๊ธ ์ ๋ชฉ, ๊ฒ์๊ธ ๋ด์ฉ, ๊ฐ๊ฒฉ, ์์ฑ์ผ, ๊ฑฐ๋์ํ, ์กฐํ์๋ฅผ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
BOARD_ID | VARCHAR(5) | FALSE |
WRITER_ID | VARCHAR(50) | FALSE |
TITLE | VARCHAR(100) | FALSE |
CONTENTS | VARCHAR(1000) | FALSE |
PRICE | NUMBER | FALSE |
CREATED_DATE | DATE | FALSE |
STATUS | VARCHAR(10) | FALSE |
VIEWS | NUMBER | FALSE |
USED_GOODS_USER ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLNO๋ ๊ฐ๊ฐ ํ์ ID, ๋๋ค์, ์, ๋๋ก๋ช ์ฃผ์, ์์ธ ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ๋ฅผ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
USER_ID | VARCHAR(50) | FALSE |
NICKANME | VARCHAR(100) | FALSE |
CITY | VARCHAR(100) | FALSE |
STREET_ADDRESS1 | VARCHAR(100) | FALSE |
STREET_ADDRESS2 | VARCHAR(100) | TRUE |
TLNO | VARCHAR(20) | FALSE |
๋ฌธ์
USED_GOODS_BOARD์ USED_GOODS_USER ํ ์ด๋ธ์์ ์๋ฃ๋ ์ค๊ณ ๊ฑฐ๋์ ์ด๊ธ์ก์ด 70๋ง ์ ์ด์์ธ ์ฌ๋์ ํ์ ID, ๋๋ค์, ์ด๊ฑฐ๋๊ธ์ก์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์ด๊ฑฐ๋๊ธ์ก์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
> ํ ์ด๋ธ ๊ฐ ๊ณตํต ์ปฌ๋ผ์ธ USED_GOODS_BOARD์ WRITER_ID์ USED_GOODS_USER์ USED_ID๋ก ์กฐ์ธ
(๊ฑฐ๋ ๊ฒ์ํ๊ณผ ์ฌ์ฉ์ ์ ๋ณด ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๊ด๊ณ๋ N:1)
์๋ฃ๋ ์ค๊ณ ๊ฑฐ๋์ ์ด๊ธ์ก์ด 70๋ง ์ ์ด์์ธ ์ฌ๋์ ํ์ ID, ๋๋ค์, ์ด๊ฑฐ๋๊ธ์ก์ ์กฐํ
> '์๋ฃ๋' → STATUS๊ฐ์ด 'DONE'
> ํ์ ID๋ณ๋ก ์ค๊ณ ๊ฑฐ๋ ๊ธ์ก์ ๊ตฌํด์ผ ํ๋ฏ๋ก GROUP BY
๊ฒฐ๊ณผ๋ ์ด๊ฑฐ๋๊ธ์ก์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
> ์ ๋ ฌ์กฐ๊ฑด
SELECT T1.WRITER_ID AS USER_ID,
T2.NICKNAME AS NICKNAME,
SUM(T1.PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD T1
LEFT JOIN USED_GOODS_USER T2
ON T1.WRITER_ID = T2.USER_ID
WHERE T1.STATUS = 'DONE'
GROUP BY T1.WRITER_ID
HAVING SUM(T1.PRICE) >= 700000
ORDER BY 3 ASC;