728x90
🔗 문제 링크
💡 문제 풀이 및 해석
- 기존 테이블에서 대여일 기준으로 RENT_TYPE을 추가해줘야 하므로 CASE 문을 사용하기로 했다.
- 먼저 년,월,일 만 뽑아줘야 하므로 DATE_FORMAT을 이용해서 모두 SELECT 해준다.
- 그 다음 조건에 맞게 RENT_TYPE을 추가해줘야 하므로 IF 문을 사용해서 '장기 대여'와 '단기 대여' 의 조건을 설정해 줬다.
- 대여일 기준으로 22년 9월에 대여한 데이터만 뽑아야 하므로 WHERE 문에 22년 9월의 조건을 넣어준다.
- 마지막으로 HISTORY_ID로 내림차순 해주는 문을 ORDER BY 에 넣어준다.
⭐️ 정답 코드 및 설명
SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d') START_DATE, DATE_FORMAT(END_DATE,'%Y-%m-%d') AS END_DATE,
IF(DATEDIFF(END_DATE,START_DATE) >= 29, '장기 대여', '단기 대여') AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE,'%Y-%m') = '2022-09'
ORDER BY HISTORY_ID DESC;
🤔 문제 후기
SQL에서 IF문을 어떻게 쓰는지 몰라서 구글링을 했다. 구글링 하면서 IF 보다는 CASE THEN 구조가 더 나아 보인다는 것을 알았고, 앞으로는 그 방식으로 진행할 것 같다. 그리고 DATE를 어떻게 계산해야 되는건지, 몰라서 이것도 찾아봤는데 SQL에는 DATE_ADD, DATE_SUB와 같이 계산하는 함수가 있다는 것도 새로 알아서 더하고 빼고 차이를 계산하는게 모두 있다는 것을 알았다.
728x90
'SQL 문제 풀이' 카테고리의 다른 글
[ 프로그래머스 ] 동명 동물 수 찾기 (MySQL) (0) | 2024.03.08 |
---|---|
[ 프로그래머스 ] 특정 옵션이 포함된 자동차 리스트 구하기 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 조건에 부합하는 중고거래 댓글 조회하기 (MySQL) (1) | 2024.03.05 |
[ 프로그래머스 ] 인기있는 아이스크림 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 과일로 만든 아이스크림 고르기 (MySQL) (0) | 2024.03.05 |