🔗 문제 link : https://school.programmers.co.kr/learn/courses/30/lessons/157340
🖥️ 문제 풀이
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'
) THEN '대여중'
ELSE '대여 가능'
END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
💡 문제 해결
SELECT 안에 서브쿼리 쓴 이유
자동차별 상태를 새로운 컬럼으로 만들어야 함
SELECT
CAR_ID,
CASE
WHEN ...
THEN '대여중'
ELSE '대여 가능'
END AS AVAILABILITY
처럼 SELECT에서 새 컬럼을 생성
이때 조건 판단에 필요한 것
: "현재 CAR_ID가 2022-10-16에 대여 중인 자동차인가?"
이걸 확인하기 위해 서브쿼리 사용:
SELECT CAR_ID
FROM ...
WHERE START_DATE <= '2022-10-16'
AND END_DATE >= '2022-10-16'
실행 흐름
| 대여중인 자동차 ID 목록 생성 ↓ 현재 CAR_ID가 그 목록에 있는지 확인 ↓ 있으면 '대여중', 없으면 '대여 가능' ↓ AVAILABILITY 컬럼 생성 |
필터링 목적이 아니라 새로운 값을 만들어 출력하기 위해 SELECT 안에 서브쿼리 사용
'SQL Coding Test > [Programmers]' 카테고리의 다른 글
| [Programmers] 대장균의 크기에 따라 분류하기 2 (Lv.3) (0) | 2026.05.26 |
|---|---|
| [Programmers] 조건에 맞는 사용자 정보 조회하기 (Lv.3) (0) | 2026.05.26 |
| [Programmers] 오랜 기간 보호한 동물(2) (Lv.3) (0) | 2026.05.26 |
| [Programmers] 조건에 맞는 개발자 찾기 (Lv.2) (0) | 2026.05.24 |
| [Programmers] 연도별 대장균 크기의 편차 구하기 (Lv.2) (0) | 2026.05.23 |