티스토리 뷰

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/06   »
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
글 보관함
250x250