반응형
CASE WHEN 조건 THEN 값 END
- CASE로 조건문을 걸며 WHEN 와 THEN을 사용하여 결과값을 도출해 낼수 있다.
- WHEN 구문을 늘려나가며 조건을 더 늘려나갈 수 있다.
- THEN을 사용하여 해당 조건에 충족될때의 값을 설정할 수 있다.
- CASE의 조건문은 END 로 끝나야한다.
예제를 통해 살펴보겠다.
SELECT CASE
WHEN categoryid = 1 THEN "음료"
WHEN categoryid = 2 THEN "조미료"
ELSE "기타"
END
FROM products
보통 이런식으로 조건문을 걸어 사용하는데 column값이 너무 길어지므로 END 마지막에 AS를 사용하여 별칭을 정해 column길이를 줄일 수 있다.
SELECT CASE
WHEN categoryid = 1 THEN "음료"
WHEN categoryid = 2 THEN "조미료"
ELSE "기타"
END AS "categoryName"
FROM products
WHEN 조건에 하나의 조건이 아닌 2개 이상의 조건을 걸고 싶으면 AND를 사용하면 된다.
SELECT CASE
WHEN categoryid = 1 AND SupplierID = 1 THEN "음료"
WHEN categoryid = 2 THEN "조미료"
ELSE "기타"
END AS "categoryName"
FROM products
WHEN 조건을 이용하여 새로운 column을 만들고 그것을 GROUPBY 하여 묶기
SELECT CASE
WHEN categoryid = 1 THEN "음료"
WHEN categoryid = 2 THEN "소스"
ELSE "이외"
END AS new_category
,AVG(price)
FROM Products
GROUP BY new_category
- 조건문에 맞는 column값들을 통해 새로운 값을 도출하고 AS를 사용하여 new_category라는 새로운 별칭을 만들었다.
- 이를 AS를 통해 새로운 column name을 만들고 groupby를 통해 값들을 묶는 과정이다.
'SQL > MySQL' 카테고리의 다른 글
[MYSQL] 두 개 이상 테이블 결합하기 (0) | 2022.01.21 |
---|---|
[MYSQL] table 피봇팅 (0) | 2022.01.16 |
[MYSQL] HackRank GROUP BY 문제들 풀어보기 (0) | 2022.01.05 |
[MYSQL] 보고싶은 데이터 요약하기 COUNT,SUM,AVG,MIN/MAX, GROUB BY & HAVING (0) | 2022.01.04 |
[MYSQL] 데이터 순서 정렬하기 (0) | 2021.12.30 |