SQL
[MySQL] CASE WHEN / ์กฐ๊ฑด์ ๋ถํฉํ๋ ์ค๊ณ ๊ฑฐ๋ ์ํ ์กฐํํ๊ธฐ
O'mil
2024. 5. 1. 15:31
728x90
๐ ๋งํฌ
์กฐ๊ฑด์ ๋ถํฉํ๋ ์ค๊ณ ๊ฑฐ๋ ์ํ ์กฐํํ๊ธฐ
๐ ๋ฌธ์ ์ค๋ช
Table: USED_GOODS_BOARD
- 2022๋
10์ 5์ผ์ ๋ฑ๋ก๋ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์๋ฌผ์ ๊ฒ์๊ธ ID, ์์ฑ์ ID, ๊ฒ์๊ธ ์ ๋ชฉ, ๊ฐ๊ฒฉ, ๊ฑฐ๋์ํ๋ฅผ ์กฐํ
๊ฑฐ๋์ํ๊ฐ SALE์ด๋ฉด ํ๋งค์ค, RESERVED์ด๋ฉด ์์ฝ์ค, DONE์ด๋ฉด ๊ฑฐ๋์๋ฃ ๋ถ๋ฅํ์ฌ ์ถ๋ ฅ
๊ฒฐ๊ณผ๋ ๊ฒ์๊ธ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
๐ป ์ฝ๋
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
FROM USED_GOODS_BOARD
WHERE CREATED_DATE LIKE '2022-10-05'
ORDER BY BOARD_ID DESC;
๐ก ๊ฒฐ๊ณผ
โ ์๋ฌธ์
- ๊ฑฐ๋์ํ๋ฅผ ํ๋งค์ค, ์์ฝ์ค, ๊ฑฐ๋์๋ฃ๋ก ๋ถ๋ฅํ์ฌ ์ถ๋ ฅํ๋ ๋ฒ์ ๋ชจ๋ฆ..
๐ CASE WHEN
- ์๋ก์ด ์ด์ ์์ฑํ๋ ๊ฒฝ์ฐ
- ์ด์ ์ง๊ณํ๋ ๊ฒฝ์ฐ(์ง๊ณํจ์์ ํจ๊ป ์ฐ์
- SELECT์ ์์ ์ฌ์ฉ
// ์๋ก์ด ์ด ์์ฑ
SELECT
CASE
WHEN ๊ธฐ์กด ์ด = ์กฐ๊ฑด1 THEN '๊ฐ1'
WHEN ๊ธฐ์กด ์ด = ์กฐ๊ฑด2 THEN '๊ฐ2'
WHEN ๊ธฐ์กด ์ด = ์กฐ๊ฑด3 THEN '๊ฐ3'
(ELSE์ด) END AS ์๋ก์ด ์ด
// ์ด ์ง๊ณ
SELECT ์ง๊ณํจ์((DISTINCT)
CASE
WHEN ๊ธฐ์กด ์ด = '์กฐ๊ฑด' THEN ์ง๊ณ ์ด (ELSE๊ฐ) END)
AS ์๋ก์ด ์ด
์์)
// ์๋ก์ด ์ด ์์ฑ
// ์์1
SELECT *,
CASE
WHEN `STATUS` = 'SALE' THEN 'ํ๋งค์ค'
WHEN `STATUS` = 'RESERVED' THEN '์์ฝ์ค'
WHEN `STATUS` = 'DONE' THEN '๊ฑฐ๋์๋ฃ'
END AS `STATUS`
FROM EXAMPLE;
// ์์2
SELECT *,
CASE
WHEN AGE BETWEEN 0 AND 7 THEN '์ด๋ฆฐ์ด'
WHEN AGE BETWEEN 8 AND 20 THEN '์ฒญ์๋
'
ELSE '์ด๋ฅธ'
END AS '๋์ด ๋ถ๋ฅ'
- ์์2์์ 'ELSE'๋ฌธ์ ๋บ๋ค๋ฉด ์ด๋ฅธ์ ํด๋นํ๋ ๋์ด๋ ๋ชจ๋ NULL์ฒ๋ฆฌ๊ฐ ๋๋ค.
๐ป ์ฝ๋
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;
๐ก ๊ฒฐ๊ณผ
๐Reference
https://suy379.tistory.com/110
728x90