Notice
Recent Posts
Recent Comments
Archives
반응형
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
01-09 19:59
250x250
관리 메뉴

꿈꾸는 개발자의 블로그

[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 본문

Algorithm/Programmers

[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

aldrn29 2023. 2. 21. 14:17

문제

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

 

문제 풀이

  1. 여러 옵션들 중 하나 이상이 포함되었는지 확인하기 위하여 REGEXP_LIKE 구문으로 WHERE 조건을 건다.
  2. 자동차 종류 별로 조회하기 위하여 GROUP BY로 묶는다.
  3. 위의 조건에 해당하는 자동차가 몇 대인지 count 함수로 조회한다.

- REGEXP_LIKE 구문을 사용한 이유 : 처음엔 아래 주석한 코드처럼 사용하려 했지만, 되지 않았고.. 결국 LIKE를 여러개 사용하여 코드가 길어졌다. 그러다 정규식을 사용한 다중 LIKE 연산자를 알게 되었고, 한줄로 간단한 쿼리 작성이 가능했다. 

-- WHERE OPTIONS LIKE '%통풍시트%' || '%열선시트%' || '%가죽시트%' 
-- WHERE OPTIONS LIKE '%통풍시트%' OR '%열선시트%' OR '%가죽시트%' 

WHERE OPTIONS LIKE '%통풍시트%'
     OR OPTIONS LIKE '%열선시트%'
     OR OPTIONS LIKE '%가죽시트%'

 

전체 코드

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

 

728x90
728x90
Comments