𝙎𝙌𝙇

[MySQL] 조건문 CASE~WHEN / IF~ELSE

콜라맛갈비 2023. 1. 13. 00:37
728x90

조건문 : CASE / IF

- CASE ~ WHEN 조건문

CASE
	WHEN 조건
	THEN '반환 값'
	WHEN 조건
	THEN '반환 값'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END

 

- IF ~ ELSE 조건문

IF (조건문, 참일때 값, 거짓일때 값)
SELECT IF(REQUIRED, '필수', '선택') AS '필수여부'
FROM TABLE

 

 

 

EX) 프로그래머스 - 자동차 대여 기록 별 대여 금액 구하기

SELECT HISTORY_ID, ROUND((DAILY_FEE * (100 - IFNULL(DISCOUNT_RATE, 0))/100) * PERIOD) FEE
FROM 
(SELECT *, TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 AS PERIOD, 
	CASE WHEN TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 >= 90 THEN '90일 이상'
		WHEN TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 >= 30 THEN '30일 이상'
		WHEN TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 >= 7 THEN '7일 이상'
		ELSE '7일 미만' END AS DURATION_TYPE
FROM CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H USING (CAR_ID)) A 
LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN D USING (CAR_TYPE, DURATION_TYPE)
WHERE CAR_TYPE = '트럭'
ORDER BY FEE DESC, HISTORY_ID DESC

 

728x90