[SQL] CASE, IF를 사용한 조건 분류

Joney의 SW 공부 블로그·2023년 2월 5일
0

SQL

목록 보기
7/14

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, IFWHERE구나 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';
profile
SW 지식 노트 블로그

0개의 댓글