https://school.programmers.co.kr/learn/courses/30/lessons/151137
프로그래머스 - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS IN ('통풍시트', '열선시트', '가죽시트')
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE DESC;
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%열선시트%'
OR OPTIONS LIKE '%통풍시트%'
OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
OPTIONS
테이블에 ['열선시트', '가죽시트',,,] 요따구로 들어가있으므로 따옴표까지 문자열 처리해서 LIKE %어쩌구%
를 써야한다.IN 연산자는 WHERE 절에서 특정값 여러개를 선택하고 싶을 때 사용
ex) 옷 색상이 RED, BLUE, GREEN 있을 때 빨간 옷과 파란 옷만 골라내고 싶을 때
SELECT * FROM CLOTHES
WHERE COLOR IN ('RED', 'BLUE');
COLOR라는 컬럼에 값 하나씩!! IN ()에 해당하는 값을 가진 여러개의 컬럼을 뽑고자 사용
OR을 줄여서 쓰게 해줌. IN을 안썼다면 위 쿼리는
SELECT * FROM CLOTHES
WHERE COLOR LIKE "RED" OR COLOR LIKE "BLUE";
그러나 지금 문제는 OPTIONS이라는 컬럼에 값이 배열로 여러개 들어가있기 때문에 IN을 사용하지 못한다. 만약에 OPTIONS에 "가죽시트" 등이 하나씩만 들어가있었다면 사용 가능.
HAVING절을 사용해야하나 헷갈렸는데 HAVING은 WHERE에서 사용하지 못했던 집계함수를 쓰는 곳!! IN이나 LIKE 등은 WHERE에서 처리하자