SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค level 3] ์กฐ๊ฑด์— ๋งž๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒํ•˜๊ธฐ

1eehyunji 2023. 8. 8. 00:37

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์ค‘๊ณ  ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_BOARD ํ…Œ์ด๋ธ”๊ณผ ์ค‘๊ณ  ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ฒจ๋ถ€ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_USER ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. USED_GOODS_BOARD ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS๋Š” ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ, ๊ฐ€๊ฒฉ, ์ž‘์„ฑ์ผ, ๊ฑฐ๋ž˜์ƒํƒœ, ์กฐํšŒ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column nameTypeNullable

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 nameTypeNullable

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 ํ…Œ์ด๋ธ”์—์„œ ์ค‘๊ณ  ๊ฑฐ๋ž˜ ๊ฒŒ์‹œ๋ฌผ์„ 3๊ฑด ์ด์ƒ ๋“ฑ๋กํ•œ ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ์ž ID, ๋‹‰๋„ค์ž„, ์ „์ฒด์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ, ์ „์ฒด ์ฃผ์†Œ๋Š” ์‹œ, ๋„๋กœ๋ช… ์ฃผ์†Œ, ์ƒ์„ธ ์ฃผ์†Œ๊ฐ€ ํ•จ๊ป˜ ์ถœ๋ ฅ๋˜๋„๋ก ํ•ด์ฃผ์‹œ๊ณ , ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ฒฝ์šฐ xxx-xxxx-xxxx ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํ•˜์ดํ”ˆ ๋ฌธ์ž์—ด(-)์„ ์‚ฝ์ž…ํ•˜์—ฌ ์ถœ๋ ฅํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ํšŒ์› ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œํ’€์ด

SELECT USER_ID, NICKNAME, 
CONCAT(CITY, ' ',STREET_ADDRESS1,' ', STREET_ADDRESS2) AS ์ „์ฒด์ฃผ์†Œ, 
CONCAT(SUBSTR(TLNO, 1, 3), '-',SUBSTR(TLNO, 4, 4),'-', SUBSTR(TLNO, 8,4)) AS ์ „ํ™”๋ฒˆํ˜ธ 
FROM USED_GOODS_BOARD AS BOARD
JOIN USED_GOODS_USER AS USER ON BOARD.WRITER_ID=USER.USER_ID
GROUP BY USER_ID
HAVING COUNT(USER_ID)>=3
ORDER BY USER_ID DESC;

1. USED_GOODS_BOARD์™€ USED_GOODS_USER๋ฅผ ๊ฐ๊ฐ WRITER_ID์™€ USER_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ JOINํ•œ๋‹ค.

2. ์กฐ์ธํ•œ ๋ฐ์ดํ„ฐ๋ฅผ USER_ID๋กœ ๊ทธ๋ฃนํ™”ํ•œ๋‹ค.

3. ๊ทธ๋ฃน๋ณ„๋กœ ๊ฐœ์ˆ˜๊ฐ€ 3๊ฐœ ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋“ค์„ ์ถ”์ถœํ•œ๋‹ค.

4. CONCAT์„ ์ด์šฉํ•ด์„œ ์ „์ฒด ์ฃผ์†Œ์™€ ์ „ํ™” ๋ฒˆํ˜ธ๋ฅผ ํ˜•์‹์— ๋งž๊ฒŒ ์ถ”์ถœํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ „์ฒด ์ฃผ์†Œ์˜ ๊ฒฝ์šฐ CITY์™€ ๋„๋กœ๋ช… ์ฃผ์†Œ์™€ ์ƒ์„ธ ์ฃผ์†Œ๋ฅผ ' ' ๊ณต๋ฐฑ์„ ๋‘๊ณ  ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถ”์ถœํ•œ๋‹ค. 

5. ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ฒฝ์šฐ SUBSTR์„ ์ด์šฉํ•ด์„œ TLNO์˜ 1๋ฒˆ๋ถ€ํ„ฐ 3๊ฐœ, 4๋ฒˆ๋ถ€ํ„ฐ 4๊ฐœ, 8๋ฒˆ๋ถ€ํ„ฐ 4๊ฐœ๋ฅผ ๋Š์–ด์„œ '-'์œผ๋กœ ๊ตฌ๋ถ„์„ ๋‘๊ณ  ์ถ”์ถœํ•œ๋‹ค.

6. ์‚ฌ์šฉ์ž ์•„์ด๋””์™€ ๋‹‰๋„ค์ž„, ์ „์ฒด ์ฃผ์†Œ์™€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.