CASE로 조건 분류
CASE로 조건 분류하기
SELECT
문 안에서 "어떤 경우에는 ~~, 그 밖의 경우에는 ~~"와 같은 조건 처리 가능
CASE
, WHEN
, THEN
, ELSE
, END
를 사용해서 조건 부여
CASE 사용
- quantity의 값에 따라 delivery값을 조건 분류할 수 있음
SELECT
customer, quantity
CASE
WHEN quantity <= 3 THEN 1000
WHEN quantity <= 7 THEN 1200
WHEN quantity <= 10 THEN 1500
ELSE 2000
END AS delivery fee
FROM
delivery;
CASE
바로 뒤에 평가하는 컬럼명을 적고, WHEN
뒤에 조건 대신 값을 적는 방법도 있음
SELECT
customer
CASE delivery_time
WHEN 1 THEN '오전'
WHEN 2 THEN '오후'
WHEN 3 THEN '야간'
ELSE '지정 없음'
END AS delivery_time2
FROM
delivery;
IF로 조건 분류를 하자
IF로 조건 분류
- 조건 처리는
IF
도 사용 가능
- delivery 테이블의 데이터에서 quantity가 5보다 많으면 '있음' 5보다 적거나 같으면 '없음' 표시
SELECT
customer, quantity
IF(
quantity > 5, '있음', '없음'
) AS novelty
FROM
delivery;
중첩 IF
- delivery 테이블의 데이터에서 quantity가 5보다 많으면 '있음' 그 외에 3보다 크면 '다음 번 할인' 그 외는 '없음' 표시
SELECT
customer, quantity
IF(
quantity > 5, '있음',
IF(
quantity > 3, '다음 번 할인', '없음'
)
) AS novelty
FROM
delivery;
조건은 어디서 쓰이나
CASE
, IF
는 WHERE
구나 ORDER BY
구에서도 사용 가능
SELECT
*
FROM
delivery
ORDER BY
CASE delivery_time
WHEN 1 THEN 3
WHEN 2 THEN 1
WHEN 3 THEN 2
ELSE 4
END;
SELECT
*
FROM
newinfo
WHERE
(CASE
WHERE id < 3 THEN release_date
WHERE id < 5 THEN regist_date
ELSE release_date
END) > '2020-02-03';