seunghyun Note
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 with Oracle 본문
728x90
반응형
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/151137
문제 풀이
카운트를 센다는 것이 조건이 1개일 때는 매우 간단했다.
WHERE
절을 통해 조건을 설정한다면 쉽게 해결할 수 있다.
하지만 조건이 여러 개일 때 어떻게 해야 할지 고민을 했을 때 머릿속으로 정답이 보이지 않았다.
기본적인 프로그래밍 언어로 조건에 따라 수를 카운트할 때 count
라는 변수를 만들어서 count++
or count=count+1
을 통해 답을 구하곤했다.
하지만 SQL에서 카운트는 그 이상으로 간단했다. 조건이 여러 가지일 경우에는 OR
를 이용하면 된다.
A조건 ,B조건,C조건
을 충족한다면 WHERE OPTIONS LIKE {A조건} OR LIKE{B조건} OR LIKE {C조건}
으로 문제를 해결하면 된다.
또한 문제에서 OPTIONS
는 배열이 아닌 문자열이기 때문에 앞 뒤에 %
를 추가해 포함되는 단어만 추출해서 수를 카운트하면 된다.
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 1 ASC;
다른 풀이(REGEXP_LIKE를 통한 문제해결)
쿼리가 생각보다 지저분하다고 생각을 해서 찾아보다가 `REGEXP_LIKE' 함수를 찾게 됐다.
REGEXP_LIKE
는 정규식을 통해 다중 like
를 해결해 준다.
위에 WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'
대신에
WHERE REGEXP_LIKE(OPTIONS, '통풍시트|열선시트|가죽시트')
로 문제를 해결하면 된다.
SELECT CAR_TYPE, COUNT(*) AS "CARS"
FROM CAR_RENTAL_COMPANY_CAR
`
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC;
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
입양 시각 구하기(1) with Oracle (0) | 2024.05.11 |
---|---|
진료과별 총 예약 횟수 출력하기 with Oracle (0) | 2024.05.07 |
중성화 여부 파악하기 with Oracle (0) | 2024.05.07 |
[프로그래머스] [1차] 캐시 with JS (0) | 2024.02.13 |
기사단원의 무기 with JS (0) | 2024.02.08 |