프로그래머스/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를 생각하자