Coding Test/SQL

Programmers] ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ค‘๊ณ ๊ฑฐ๋ž˜ ์ƒํƒœ ์กฐํšŒํ•˜๊ธฐ

littlezero48 2023. 3. 30. 17:28

๐Ÿ“Œ MySQL ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

USED_GOODS_BOARD ํ…Œ์ด๋ธ”์—์„œ 2022๋…„ 10์›” 5์ผ์— ๋“ฑ๋ก๋œ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œ๋ฌผ์˜ ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฐ€๊ฒฉ, ๊ฑฐ๋ž˜์ƒํƒœ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฑฐ๋ž˜์ƒํƒœ๊ฐ€ SALE ์ด๋ฉด ํŒ๋งค์ค‘, RESERVED์ด๋ฉด ์˜ˆ์•ฝ์ค‘, DONE์ด๋ฉด ๊ฑฐ๋ž˜์™„๋ฃŒ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ถœ๋ ฅํ•ด์ฃผ์‹œ๊ณ , ๊ฒฐ๊ณผ๋Š” ๊ฒŒ์‹œ๊ธ€ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

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

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

 


์ถ”์ธก) 

SQL์—์„œ์˜ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์ค‘์ ์ธ ๋ฌธ์ œ์ธ๋“ฏํ•˜๋‹ค. 

์ƒํƒœ๊ฐ€ 3๊ฐ€์ง€ ์ด๋ฏ€๋กœ CASE WHEN ์ผ€์ด์Šค๋กœ!

 

์ฟผ๋ฆฌ) 

* 1์ฐจ) 

SELECT 
    BOARD_ID, 
    WRITER_ID, 
    TITLE, PRICE, 
    CASE 
        WHEN STATUS = 'SALE' THEN 'ํŒ๋งค์ค‘'
        WHEN STATUS = 'RESERVED' THEN '์˜ˆ์•ฝ์ค‘' 
		ELSE '๊ฑฐ๋ž˜์™„๋ฃŒ' 
    END AS STATUS
FROM USED_GOODS_BOARD 
WHERE CREATED_DATE LIKE '2022-10-05%'
ORDER BY BOARD_ID DESC

 

๋ฆฌ๋ทฐ) 

SQL์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ• ๋•Œ๋Š”

1. IF(์กฐ๊ฑด๋ฌธ, ์ฐธ์ผ๋•Œ ๊ฐ’, ๊ฑฐ์ง“์ผ๋•Œ ๊ฐ’) 

2. IFNULL(nullํŒ๋‹จ ๊ฐ’, null์ด๋ฉด ์ถœ๋ ฅ๋  ๊ฐ’)

3. CASE WHEN ์กฐ๊ฑด๋ฌธ THEN ์ฐธ์ผ๋•Œ ๊ฐ’ ELSE ๊ฑฐ์ง“์ผ๋•Œ ๊ฐ’ END

๋“ฑ์˜ ํ•จ์ˆ˜๋‚˜ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ๋‹ค. 

 

ํŠนํžˆ 3๋ฒˆ์—์„œ when์ด๋ž‘ then์€ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  else๋Š” ๋ชจ๋“  ์กฐ๊ฑด์ด ์•„๋‹์‹œ ์ถœ๋ ฅ๋˜๋Š” ๊ฐ’์„ ์“ฐ๋Š” ๊ฑฐ๋ผ java์˜ switch์— ๊ฐ€๊น๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ด ์กฐ๊ฑด๋ฌธ๋“ค์€ ์ค‘์ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.