티스토리 뷰
728x90
문제를 읽고 종류 별로, 자동차 수 세는 SQL문 까지는 해결을 했는데, 해당 코드에서 옵션 컬럼이 , 로 구분된 키워드 리스트 여서 단순 IN 연산자로는 필터링 되지 않는 것 같다.
구글을 통해 검색해본 결과
MySQL에서는 FIND_IN_SET() 이라는 함수가 존재해서 특정 값을 찾을 수 있는 것 같다.
쉼표로 구문된 리스트 안에서 몇 번째 위치하는지 반환해서, 찾으면 1 이상을 반환 하므로 > 0 조건으로 필터링 할 수 있다고 한다.
예시)
SELECT *
FROM your_table
WHERE FIND_IN_SET('통풍시트', seat_option) > 0
OR FIND_IN_SET('열선시트', seat_option) > 0
OR FIND_IN_SET('가죽시트', seat_option) > 0;
그 외 여러가지 방법이 있겠지만, LIKE 연산자를 통해 '%~%' OR ... 반복해서 필터링 할 수 있다.
정답 코드
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE FIND_IN_SET('통풍시트', OPTIONS) > 0
OR FIND_IN_SET('열선시트', OPTIONS) > 0
OR FIND_IN_SET('가죽시트', OPTIONS) > 0
GROUP BY 1
ORDER BY 1
728x90
'SQL' 카테고리의 다른 글
SQL 문자열 자르기 (0) | 2025.05.13 |
---|---|
SQL NULL 처리하기 (0) | 2025.05.12 |
SQL 상위 N개 데이터 가져오기 (0) | 2025.05.12 |