문제설명
다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.
Column name | Type | Nullable |
HISTORY_ID | INTEGER | FALSE |
CAR_ID | INTEGER | FALSE |
START_DATE | DATE | FALSE |
END_DATE | DATE | FALSE |
문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
코드
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) >= 29 THEN '장기 대여' ELSE '단기 대여' END
AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC
날짜 연산함수
DATEDIFF
두 날짜의 차이(일수)를 계산하는 함수
구문
DATEDIFF(date1, date2)
- date1: 첫 번째 날짜 (종료 날짜).
- date2: 두 번째 날짜 (시작 날짜).
결과: date1에서 date2를 뺀 일 수를 정수로 반환합니다. 만약 date1이 더 나중의 날짜라면 양수를 반환하고, 더 이른 날짜라면 음수를 반환합니다.
예제
SELECT DATEDIFF('2022-10-10', '2022-10-01') AS difference;
TIMESTAMPDIFF
두 시간의 차이를 계산하는 함수
첫번째 인자에 SECOND, MINUTE,DAY,MANTH,YEAR 지정
구문
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
- unit: 결과를 반환할 단위. 예: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR 등.
- datetime_expr1: 시작 날짜/시간.
- datetime_expr2: 종료 날짜/시간.
예제
SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-01-31') AS days_difference;
DATE_ADD
시간이나 날짜를 더하는 함수
구문
DATE_ADD(date, INTERVAL expr unit)
- date: 날짜를 지정합니다.
- INTERVAL expr unit: 더할 간격을 지정합니다. expr은 정수 값이며, unit은 간격의 단위를 나타냅니다. 예: DAY, MONTH, YEAR 등.
예제
SELECT DATE_ADD('2022-01-01', INTERVAL 30 DAY) AS new_date;
'SQL > 코딩테스트' 카테고리의 다른 글
[코딩테스트] SQL - 중성화 여부 파악하기 (0) | 2024.10.30 |
---|---|
[코딩테스트] SQL - 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2024.10.30 |
[코딩테스트] SQL - Python 개발자 찾기 (0) | 2024.10.28 |
[코딩테스트] SQL - 잔챙이 잡은 수 구하기 (0) | 2024.10.28 |
[코딩테스트] SQL - 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (0) | 2024.10.28 |