링크 : https://school.programmers.co.kr/learn/courses/30/lessons/157340
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제
- 소요시간 : 15분 41초
- 설계하기(접근방법)
1. 요구 사항 정리
1) 2021년 10월 16일에 대여 중인 자동차: 대여중
2) 2021년 10월 16일에 대여중이 아닌 자동차: 대여 가능
2. 출력
컬럼
1) CAR_ID GROUP_BY를 통해 중복 제거
2) AVAILABILITY ->
시작 날짜가 10-16 전이고
끝 날짜가 10-16 이후 인 차 리스트를 구한다
그 후 IN 연산자를 통해 해당 차가 대여중이라면
'대여중'
리스트 내에 없다면
'대여 가능' 으로 출력해준다
추가 처리
1) CAR_ID로 내림차순
- 코드(출력)
SELECT CAR_ID,
CASE
WHEN CAR_ID IN
(SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE <= '2022-10-16' AND END_DATE >= '2022-10-16'
GROUP BY CAR_ID)
THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
- 얻어갈 부분
1. 조건 절 내에 들어갈 조건리스트를 서브쿼리로 만들어 비교한 후 출력할 수 있다는 것을 배웠다
'SQL' 카테고리의 다른 글
[SQL/JOIN] 오랜 기간 보호한 동물(1) - 프로그래머스 (0) | 2024.02.21 |
---|---|
[SQL/String, Date] 대여 기록이 존재하는 자동차 리스트 구하기 - 프로그래머스 (0) | 2024.02.13 |
[SQL/GROUP BY] 조건에 맞는 사용자와 총 거래금액 조회하기 - 프로그래머스 (0) | 2024.02.13 |
[SQL/String, Date] 조건에 맞는 사용자 정보 조회하기 - 프로그래머스 (0) | 2024.02.13 |
[SQL/String, Date] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 - 프로그래머스 (0) | 2024.02.13 |