SQL

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

1eehyunji 2023. 8. 2. 18:22

๋ฌธ์ œ ์„ค๋ช…

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

 

๋ฌธ์ œํ’€์ด

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

์˜ค๋žœ๋งŒ์— CASE...WHEN...THEN...END๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • USED_GOODS_BOARD ํ…Œ์ด๋ธ”์—์„œ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ๋‚ ์งœ(CREATED_DATE)๊ฐ€ 2022๋…„ 10์›” 5์ผ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.
  • ์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฐ€๊ฒฉ, ๊ฑฐ๋ž˜ ์ƒํƒœ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ๊ฑฐ๋ž˜ ์ƒํƒœ๋Š” 'SALE'->'ํŒ๋งค์ค‘', 'RESERVED'->'์˜ˆ์•ฝ์ค‘', 'DONE'->'๊ฑฐ๋ž˜์™„๋ฃŒ'๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ CASE...WHER...THEN...END ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์€๊ทผํžˆ ์ž์ฃผ ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ๊ธฐ์–ตํ•ด๋‘์ž.