Sql
title: 2026-01-12 author: 강병호 (이름) date: 2026-01-12 (날짜) category: TIL/강병호/2026/01 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
📌 제목: 대여 기록이 존재하는 자동차 리스트 구하기 (LV3)
📚 개념
📅 생성일시
- 202X년 X월 X일
✍️ 풀이 과정
- 문제 분석: 요구사항(조회 컬럼, 필터링 조건, 정렬 기준) 파악
- 자동차 종류 세단
- 10월 대여 시작
- ID 리스트 출력
- 중복 X
- 내림차순 정렬
- 로직 설계: 조인 필요 여부, 그룹화 기준, 집계 함수 사용 계획 수립
- CAR_TYPE 세단 만 처리
- HISTORY 테이블에서 START_DATE 필터링
- 내림 차순 처리
- 구현 및 검증: 쿼리 작성 후 예외 케이스(NULL, 중복 등) 고려하여 최종 확인
❌ 오답 코드 (실수 분석)
SELECT
DISTINCT C.CAR_ID AS CAR_ID
FROM CAR_RENTAL_CAMPANY_CAR AS C
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON C.CAR_ID = H.CAR_ID
WHERE C.CAR_TYPE = '세단' AND H.START_DATE LIKE '2022-10%'
GROUP BY C.CAR_ID
ORDER BY C.CAR_ID DESC
오답 이유:
- (예: 문법 에러 - 쉼표 누락, 따옴표 오사용 등)
- (예: 논리 에러 - JOIN 조건 미비, GROUP BY 대상 불일치 등)
CAR_RENTAL_CAMPANY_CARO를 A로..
✅ 정답 코드
SELECT
DISTINCT C.CAR_ID AS CAR_ID
FROM CAR_RENTAL_COMPANY_CAR AS C
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H ON C.CAR_ID = H.CAR_ID
WHERE C.CAR_TYPE = '세단' AND H.START_DATE LIKE '2022-10%'
GROUP BY C.CAR_ID
ORDER BY C.CAR_ID DESC
💡 부족 개념 & 핵심 정리
1. [학습한 주요 문법/함수]
DISTINCT가 되는 위치
1. 📍 DISTINCT의 위치와 규칙
- 무조건
SELECT바로 뒤:DISTINCT는 특정 컬럼 하나에 걸리는 함수가 아니라,SELECT결과 전체 행에 적용되는 키워드입니다.- (정답)
SELECT DISTINCT 컬럼1, 컬럼2 FROM ... - (오답)
SELECT 컬럼1, DISTINCT 컬럼2 FROM ...(문법 에러)
- 모든 컬럼에 적용:
SELECT DISTINCT 컬럼1, 컬럼2라고 쓰면, (컬럼1)만 중복 제거하는 것이 아니라 (컬럼1 + 컬럼2)의 조합이 중복되는 것을 제거합니다.
2. [실수를 방지하기 위한 팁]
3. [다른 풀이 방식이 있다면?]
🔗 관련 링크
- https://school.programmers.co.kr/learn/courses/30/lessons/157341