자동차 대여 기록에서 장기/단기 대여
https://school.programmers.co.kr/learn/courses/30/lessons/151138
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SELECT HISTORY_ID
, CAR_ID
, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE
, DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE
, CASE WHEN DATEDIFF(END_DATE,START_DATE) + 1 >= 30 THEN "장기 대여"
ELSE "단기 대여" END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, "%Y-%m") = "2022-09"
ORDER BY HISTORY_ID DESC
- #DATEDIFF : 두 날짜의 차이 계산(END-START)
- 날짜 차이를 구할때 2/7~2/7을 0으로 계산하기 때문에 1을 더해줘야한다.
- DATEDIFF() 사용하여 날짜 수 계산함 (9월 28일에 빌려서 동일 날짜에 반납해도 1일로 간주하므로 +1 필요함)
- ※자주하는 실수인데 한달 일수를 구하는데 31일 - 1일을 하면 30일이 된다.
- IF 조건 A ELSE B 문과도 같은 CASE WHEN 조건 THEN A ELSE B
WHERE
START_DATE LIKE '2022-09%'
WHERE
START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
WHERE
DATE_FORMAT(START_DATE, "%Y-%m") = "2022-09"
WHERE
TO_CHAR(START_DATE , 'YYYY-MM-DD') LIKE '2022-09%'
WHERE
TO_CHAR(START_DATE , 'YYYY-MM') LIKE '2022-09'
- 여러 날짜 표현 방법 (조건 : 2022년 9월)
- DATE_FORMAT(날짜, 형식)
IF(DATEDIFF(END_DATE,START_DATE)>=29,'장기 대여','단기 대여') RENT_TYPE
CASE WHEN DATEDIFF(END_DATE,START_DATE) + 1 >= 30 THEN "장기 대여"
ELSE "단기 대여" END AS RENT_TYPE
# WHEN DATEDIFF(END_DATE,START_DATE) + 1 < 30 THEN "단기 대여" END AS RENT_TYPE
- 조건이 2개 일 때 : IF 조건식
- if (조건,참일떄 ,거짓일떄)
- 다중 조건 : CASE WHEN은 ELSE 마지막에 END를 꼭 붙여야 한다.
CASE
WHEN 조건 1
THEN ‘조건 1 만족 시 반환하는 값’
WHEN 조건 2
THEN ‘조건 2 만족 시 반환하는 값’
ELSE ‘조건들에 만족 안 하는 경우 반환 값’
END
'SQL' 카테고리의 다른 글
[SQL] IS NULL ( NULL은 = 아닙니다) (0) | 2023.03.27 |
---|---|
[SQL] 행을 제한(한정)하고 싶다면 LIMIT과 DISTINCT (0) | 2023.03.24 |
SQL 스터디를 시작한 이유 (프론트엔드도 SQL 알아야 해?) (0) | 2023.03.23 |