프로그래머스/DB(oracle)

프로그래머스(151137) 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 [regexp_like]

svdjcuwg4638 2023. 4. 2. 08:52

문제

CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.


예시

예를 들어 CAR_RENTAL_COMPANY_CAR 테이블이 다음과 같다면

CAR_IDCAR_TYPEDAILY_FEEOPTIONS

1 세단 16000 가죽시트,열선시트,후방카메라
2 SUV 14000 스마트키,네비게이션,열선시트
3 SUV 22000 주차감지센서,후방카메라
4 트럭 35000 주차감지센서,네비게이션,열선시트
5 SUV 16000 가죽시트,네비게이션,열선시트,후방카메라,주차감지센서

'통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차는 자동차 ID가 1, 2, 4, 5인 자동차이고, 자동차 종류 별로 몇 대인지 구하고 자동차 종류를 기준으로 오름차순 정렬하면 다음과 같은 결과가 나와야 합니다.

CAR_TYPECARS

SUV 2
세단 1
트럭 1

풀이

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

regexp_like는 (컬럼명,'조건1 | 조건 2 | 조건 3 | 조건 4') 와같이 like or 사용없이 간편하고 짧게 작성이 가능하다

like 였다면 option like '%통풍시트%' or option like '%열선시트%' 이런식으로 길어질것이다 이것을 줄이기위해 regexp_like를 사용하자

 

※ like문 사용할건데 or이 많이들어가면 regexp_like를 생각하자