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
'𝙎𝙌𝙇' 카테고리의 다른 글
[MySQL] 두 테이블 합치기 : UNION / UNION ALL 차이 (0) | 2023.01.14 |
---|---|
[MySQL] 날짜 차이 구하기 : DATEDIFF / TIMESTAMPDIFF (0) | 2023.01.13 |
[MySQL/ORACLE/MSSQL] 문자/날짜형 변환 (1) | 2023.01.12 |
[MySQL] 현재 날짜와 시각 정보 : sysdate 함수 (0) | 2023.01.12 |
[MySQL/ORACLE/SQLserver] 문자열 일부 추출 : substring (0) | 2023.01.11 |