그룹바이라는 스타트업도 있는데..
자동차 대여 기록에서 대여중/대여 가능 여부 구분하기
SELECT CAR_ID,
(CASE
WHEN CAR_ID IN(
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE '2022-10-16'
BETWEEN DATE_FORMAT(START_DATE, '%Y-%m-%d')
AND DATE_FORMAT(END_DATE, '%Y-%m-%d'))
THEN '대여중'
ELSE '대여 가능'
END) AS 'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
갑자기 난이도 상승함
- 1. SELECT CAR_ID, ... AS 'AVAILABILITY'
- 각 차량(CAR_ID)의 ID와 그 대여 상태를 조회
- 전체 틀은 CAR_ID와 조건에 맞는 ~~를 AVAILABILITY로 조회한다는 뜻
- 2. CASE문
- CASE문을 통해 차량의 대여 상태를 결정
- CAR_ID가 IN절에 포함되면 '대여중'으로, 그렇지 않으면 '대여 가능'으로 표시
- 3. IN 절 내부의 서브쿼리
- ICAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 특정 날짜(2022-10-16)에 대여 중인 차량 ID 목록
- WHERE '2022-10-16' BETWEEN DATE_FORMAT(START_DATE, '%Y-%m-%d') AND DATE_FORMAT(END_DATE, '%Y-%m-%d')
- 각 값에 대해 WHERE 조건 BETEERN 범위1 AND 범위2 - 범위1과 범위2 사이 조건이 포함되어 있는지 확인
- 포함=대여중, 아님=대여가능
- DATE_FORMAT 함수를 사용하여 START_DATE와 END_DATE를 'YYYY-MM-DD' 형식으로 포맷
- 2022-10-16이 그 사이에 있는지 확인
- 각 값에 대해 WHERE 조건 BETEERN 범위1 AND 범위2 - 범위1과 범위2 사이 조건이 포함되어 있는지 확인
- 4. GROUP BY CAR_ID
- 차량 ID(CAR_ID)를 기준으로 그룹화하여 차량별로 상태를 조회
- 5. ORDER BY CAR_ID DESC
- 차량 ID를 내림차순(DESC)으로 정렬
'개발자 강화 > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 타겟넘버 - BFS/DFS (C++) (1) | 2024.11.09 |
---|---|
[SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 - GROUP BY - 프로그래머스 (0) | 2024.11.09 |
[SQL] 프로그래머스 SUM,MAX,MIN - MySQL (3) | 2024.11.09 |
[이.취.코] 개미 전사 - DP (0) | 2024.11.08 |
[백준] 18352-특정 거리의 도시 찾기 BFS (Python3) (0) | 2024.11.08 |