1. ๋ฌธ์ ์ค๋ช
๋ค์์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ ๋ณด๋ฅผ ๋ด์ USED_GOODS_BOARD ํ ์ด๋ธ๊ณผ ์ค๊ณ ๊ฑฐ๋ ์ ์ ์ ๋ณด๋ฅผ ๋ด์ USED_GOODS_USER ํ ์ด๋ธ์ ๋๋ค. USED_GOODS_BOARD ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS๋ ๊ฒ์๊ธ ID, ์์ฑ์ ID, ๊ฒ์๊ธ ์ ๋ชฉ, ๊ฒ์๊ธ ๋ด์ฉ, ๊ฐ๊ฒฉ, ์์ฑ์ผ, ๊ฑฐ๋์ํ, ์กฐํ์๋ฅผ ์๋ฏธํฉ๋๋ค.

USED_GOODS_USER ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLN ๋ ๊ฐ๊ฐ ํ์ ID, ๋๋ค์, ์, ๋๋ก๋ช ์ฃผ์, ์์ธ ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ์๋ฏธํฉ๋๋ค.

USED_GOODS_BOARD์ USED_GOODS_USER ํ ์ด๋ธ์์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์๋ฌผ์ 3๊ฑด ์ด์ ๋ฑ๋กํ ์ฌ์ฉ์์ ์ฌ์ฉ์ ID, ๋๋ค์, ์ ์ฒด์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋, ์ ์ฒด ์ฃผ์๋ ์, ๋๋ก๋ช ์ฃผ์, ์์ธ ์ฃผ์๊ฐ ํจ๊ป ์ถ๋ ฅ๋๋๋ก ํด์ฃผ์๊ณ , ์ ํ๋ฒํธ์ ๊ฒฝ์ฐ xxx-xxxx-xxxx ๊ฐ์ ํํ๋ก ํ์ดํ ๋ฌธ์์ด(-)์ ์ฝ์ ํ์ฌ ์ถ๋ ฅํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ํ์ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
2. ์ถ๋ ฅ ์์

3. ๋ฌธ์ ๋ต์
# ๊ฒ์๋ฌผ์ 3๊ฑด ์ด์ ๋ฑ๋กํ ์ ์
WITH target_users AS(
SELECT
u.user_id,
COUNT(DISTINCT b.board_id) as board_cnt
FROM used_goods_board b
JOIN used_goods_user u
ON b.writer_id = u.user_id
GROUP BY u.user_id
HAVING board_cnt >= 3
)
# ํด๋น ์ ์ ์ ์ ๋ณด
SELECT
u.user_id,
u.nickname,
CONCAT(city, ' ', street_address1, ' ', street_address2) as ์ ์ฒด์ฃผ์,
CONCAT(LEFT(u.tlno, 3), '-', SUBSTRING(u.tlno, 4, 4), '-', RIGHT(u.tlno, 4)) as ์ ํ๋ฒํธ
FROM used_goods_user u
JOIN target_users t
ON u.user_id = t.user_id
ORDER BY u.user_id DESC;