SQL/MY SQL 문제 풀이(프로그래머스)

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

SQL공부 2024. 2. 21. 22:51
반응형

SELECT CAR_TYPE, COUNT(CAR_ID)CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE 1=1
AND OPTIONS like "%통풍시트%" 
or OPTIONS like "%열선시트%" 
or OPTIONS like "%가죽시트%"
GROUP BY 1
ORDER BY 1

CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냄

 

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

 

문제

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

 

OPTIONS에 여러 값이 들어 있고 그 중 특정한 값을 포함하는 데이터를 추출하는 문제로 보인다. 그런경우 그냥 크게 고민없이 like 로 해결하면된다. 위의 조건에 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 들어가야 한다해서 일부러 or 조건으로 하나하나 다 기입해서 넣었지만 사실 or 없이 '시트' 만 써서 처리해도 무방하다. 해당 조건으로 데이터 전체값을 필터링 한 후 자동차 타입을 기준으로 GROUP 처리 한 후 유니크한 자동차 값인 CAR_ID 기준으로 COUNT 후 정렬 처리 하면 요청하는 값을 마무리 처리 할 수있다.

 

출제되는 아직까지 출제 되는 문제는 쉬우나 실수해서 놓치는게 종종 있어서 가끔 틀렸다고 나오는데 시험에서는 그런일이 없어야 할 것 같다 ㅠ

반응형