프로그래머스/SQL

[Lv.2] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

Park SH 2025. 2. 5. 16:17

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

 

사용 언어

MySQL

 

테이블 설명

다음은 어느 자동차 대여 회사에서 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_IDCAR_TYPEDAILY_FEEOPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.

자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다. 자동차 옵션 리스트는 콤마(',')로 구분된 키워드 리스트(옵션 리스트 값 예시: '열선시트', '스마트키', '주차감지센서')로 되어있으며, 키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 가 있습니다.

 

요구사항

1. 옵션에 '통풍시트', '열선시트', '가죽시트' 중 하나 이상 포함

2. 자동차 종류별 대수(자동차 수의 컬럼명은 CARS 지정)

3. 자동차 종류 오름차순 정렬

 

풀이

1. WHERE에서 LIKE와 OR로 조건식

   (REGEXP로 정규식 사용도 가능)

2. GROUP BY로 자동차 종류를 그룹화 + COUNT하는 컬럼 생성

3. ORDER BY에서 자동차 종류 정렬 (오름차순(ASC)는 생략가능)

 

 

<LIKE와 OR을 사용한 조건식>

SELECT CAR_TYPE
    , COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE 
OPTIONS LIKE('%통풍시트%') OR 
OPTIONS LIKE('%열선시트%') OR 
OPTIONS LIKE('%가죽시트%') 
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE
;

 

 

<REGEXP를 사용한 정규 표현식>

SELECT CAR_TYPE
    , COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE
;