조건문 : IF
엑셀 if문과 동일.
예제) 가격이 1만원 이상이면 고가, 아니면 저가를 추출.

테이블
SELECT price, IF(price >= 10000, "고가", "저가") as "가격구분"
FROM products
결과

조건문 : IFNULL
값이 NULL일때 지정한 값으로 채워서 반환함.
예제)

테이블
SELECT user_name, IFNULL(date, 20231104) as date -- date컬럼이 NULL일때 20231104 를 넣는다.
FROM orders_v3
결과

갑순 DATE 값에 200231104가 들어감.
⭐CASE WHEN⭐
3개 이상의 조건을 작성할 때 사용
구문)
SELECT *,
CASE WHEN 첫 번째 조건 THEN 1반환값 —첫번째 조건이 참일때 반환값을 반환
WHEN 두 번째 조건 THEN 2반환값
ELSE 반환값 — 위의 모든 값이 아닐 때 반환
END — CASE WHEN의 끝에는 END를 사용.
예제1)만원 초과 = 고가 ,만원~4천원 = 중가, 그 이하는 저가 라고 데이터를 추출해보자.

테이블
SELECT price,
CASE
WHEN price > 10000 THEN '고가'
WHEN (price <= 10000 AND price > 4000) THEN '중가'
ELSE '저가'
END as price_class
FROM products_B
결과

예제2) date컬럼을 기준으로 20231014 = 첫째날, 20231015= 둘째날, 나머지는 기타로 추출.

테이블
SELECT date
CASE date -- date 컬럼을 기준으로
WHEN '20231014' THEN "첫째날"
WHEN '20231014' THEN "둘째날"
ELSE "기타"
END AS date_group
FROM clicks
결과

SELECT category, name, date, price,
CASE date WHEN '20231014' THEN --date가 20231014일때 밑에 중첩 CASE WHEN을 사용
CASE WHEN price > 5000 THEN '첫째날-고가'
ELSE '첫째날-저가'
END
ELSE -- 20231014가 아닐때 밑에 중첩 CASE WHEN을 사용.
CASE WHEN price > 5000 THEN '둘째날-고가'
ELSE '둘째날-저가'
END
END as data_price_class -- date에 대한 CASE WHEN 컬럼 명.
FROM clicks c INNER JOIN products p ON
c.product_id = p.product_id
결과값

실무꿀팁! WHERE 절에서 사용하기.
WHERE절에서 사용하면 조건을 여러번 검색할때 스위치처럼 사용할 수 있다.
예) 상품 테이블에서 카테고리가 키즈이고 이름에 어린이가 들어가는 컬럼 추출.
SELECT *
FROM products
WHERE ( CASE WHEN category = "키즈" THEN 1
WHEN name like "%어린이%" THEN 1
WHEN name like "%보호대%" THEN 2
WHEN category = "디지털" THEN 2
ELSE 3
END
) =1 -- CASE WHEN에서 1값만 필터링
결과

이때 WHERE = 2로 변경하면 카테고리가 디지털이고 이름에 보호대가 들어가는 컬럼을 추출하게 된다.
SELECT *
FROM products
WHERE ( CASE WHEN category = "키즈" THEN 1
WHEN name like "%어린이%" THEN 1
WHEN name like "%보호대%" THEN 2
WHEN category = "디지털" THEN 2
ELSE 3
END
) =2 -- CASE WHEN에서 2값만 필터링
결과

실무꿀팁! ORDER BY 절에서 사용하기.
order by에 사용하는 경우 내가 원하는대로 정렬을 할 수 있다.
예제) 카테고리를 디지털, 주방용품, 스포츠 순으로 정렬하고자 할 때
SELECT *
FROM products
ORDER BY ( CASE WHEN category = "디지털" THEN 1
WHEN category = "주방용품" THEN 2
WHEN category = "스포츠" THEN 3
ELSE 4
END
)--오름차순 진행, DESC를 붙이면 내림차순 됨.
결과
