Algorithm/SQL

[SQL] GROUP BY > 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

메린지 2023. 12. 7. 23:27

[문제]

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

CAR_IDCAR_TYPEDAILY_FEEOPTIONS

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

 

[풀이]

SELECT CAR_TYPE, COUNT(CAR_ID)
FROM CAR_RENTAL_COMPANY_CAR
WHERE INSTR(OPTIONS, '통풍시트') > 0 OR
      INSTR(OPTIONS, '열선시트') > 0 OR
      INSTR(OPTIONS, '가죽시트') > 0
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC;

 

이 문제는 푸는데 은근 고민많이했다,,

WHERE 절 작성이 어려워서 그랬는데

 

처음엔 그룹화 후에 HAVING 조건으로 줄까? 했는데 그룹핑 전에 조건으로 걸러야될 거 같아서 넘기고,

WHERE 절 처음에는 OPTIONS = ANY('통풍시트', '열선시트', '가죽시트') 로 했는데 작동이 안됐다.. <-이렇게 하면 이중에 하나가 '일치'해야된다네요 흠

 

하튼 INSTR(col, str) > 0 <- 참거짓으로 나오는건가보다

배워갑니다