Sql


title: 2026-01-12 author: 강병호 (이름) date: 2026-01-12 (날짜) category: TIL/강병호/2026/01 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —

📌 제목: 대여 기록이 존재하는 자동차 리스트 구하기 (LV3)

📚 개념

📅 생성일시

  • 202X년 X월 X일

✍️ 풀이 과정

  1. 문제 분석: 요구사항(조회 컬럼, 필터링 조건, 정렬 기준) 파악
    1. 자동차 종류 세단
    2. 10월 대여 시작
    3. ID 리스트 출력
    4. 중복 X
    5. 내림차순 정렬
  2. 로직 설계: 조인 필요 여부, 그룹화 기준, 집계 함수 사용 계획 수립
    1. CAR_TYPE 세단 만 처리
    2. HISTORY 테이블에서 START_DATE 필터링
    3. 내림 차순 처리
  3. 구현 및 검증: 쿼리 작성 후 예외 케이스(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

오답 이유:

  1. (예: 문법 에러 - 쉼표 누락, 따옴표 오사용 등)
  2. (예: 논리 에러 - JOIN 조건 미비, GROUP BY 대상 불일치 등)
  3. CAR_RENTAL_CAMPANY_CAR O를 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의 위치와 규칙

  1. 무조건 SELECT 바로 뒤:
    • DISTINCT는 특정 컬럼 하나에 걸리는 함수가 아니라, SELECT 결과 전체 행에 적용되는 키워드입니다.
    • (정답) SELECT DISTINCT 컬럼1, 컬럼2 FROM ...
    • (오답) SELECT 컬럼1, DISTINCT 컬럼2 FROM ... (문법 에러)
  2. 모든 컬럼에 적용:
    • SELECT DISTINCT 컬럼1, 컬럼2라고 쓰면, (컬럼1)만 중복 제거하는 것이 아니라 (컬럼1 + 컬럼2)의 조합이 중복되는 것을 제거합니다.

2. [실수를 방지하기 위한 팁]

3. [다른 풀이 방식이 있다면?]

🔗 관련 링크

  • https://school.programmers.co.kr/learn/courses/30/lessons/157341

results matching ""

    No results matching ""