Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- kt 에이블스쿨 6기 빅프로젝트
- kt 에이블스쿨 기자단
- 프로그래머스
- kt 에이블스쿨 6기 ai
- 머신러닝
- kt 에이블스쿨 6기 미니 프로젝트
- 케이티 에이블스쿨 6기
- 케이티 에이블스쿨 6기 spring
- 파이썬
- kt aivle school
- SQLD
- 데이터 프레임
- KT 에이블스쿨
- 케이티 에이블스쿨 6기 ai
- 네트워크
- 케이티 에이블스쿨 6기 후기
- KT AIVLE
- 백준 사탕 게임
- 백준
- 케이티 에이블스쿨 6기 java
- 에이블 기자단
- 케이티 에이블스쿨 기자단
- 알고리즘
- kt 에이블스쿨 6기
- 앙상블
- 케이티 에이블스쿨
- 구현
- 판다스
- 티스토리챌린지
- 오블완
Archives
- Today
- Total
미식가의 개발 일기
[프로그래머스/MySQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 본문
문제
- 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(RENT_TYPE)을 추가하여 대여기록을 출력
- 대여 기록 ID를 기준으로 내림차순 정렬
- TART_DATE와 END_DATE의 경우 예시의 데이트 포맷과 동일하게 처리
해결 방법
- 데이트 포맷 설정(2025-04-19 형태) → `DATE_FORMAT(target_date, '%Y-%m-%d')`
- RENT_TYPE 컬럼 추가 → CASE문으로 조건 지정, DATEDIFF를 사용해 두 날짜의 차분을 구한 후 30 이상이면 장기 대여, 아니면 단기 대여로 표기(차분은 두 날짜의 간격을 구하므로 시작 날짜는 계산에 포함하지 않는다. 따라서 차분 값에 +1을 해줘야 한다.)
- 대여 시작일이 2022년 9월에 속하는 데이터만 가져오기 → `WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'`
- HISTORY_ID 기준 내림차순 정렬 → `ORDER BY HISTORY_ID DESC`
정답
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 START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
ORDER BY HISTORY_ID DESC
반응형
'SQL' 카테고리의 다른 글
[프로그래머스/MySQL] 특정 형질을 가지는 대장균 찾기 (0) | 2025.04.19 |
---|---|
[프로그래머스/MySQL] 잡은 물고기의 평균 길이 구하기 (0) | 2025.04.19 |
[프로그래머스/MySQL] 경기도에 위치한 식품창고 목록 출력하기 (0) | 2025.04.19 |
[프로그래머스/MySQL] 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (0) | 2025.04.19 |
[SQLD] 조인 (0) | 2025.03.02 |