WHERE 혹은 HAVING 을 통해 필터를 사용하는 경우,
IN과 REGEXP를 사용한 조건식을 사용하는 경우가 많다.
보통, IN은 해당 컬럼 값이 'A' 와 같이 단일값일 때 사용한다.
예를 들어, 사무용품 컬럼에 '책상', '의자', '모니터', '컴퓨터' 의 값이 있다고 할 때,
사무용품 컬럼에 '책상', '의자' 의 단일 값만을 갖는 인스턴스를 추출하고자 하는 경우,
SELECT * FROM TABLE
WHERE 사무용품이름 IN ('책상', '의자')
위 커리를 통해 추출할 수 있다.
하지만, 주의해서 사용해야 하는 점은 해당 컬럼의 값이 단일값이 아닌 다중 값의 경우
위 쿼리를 통해 추출할 수 없다.
이러한 경우 REGEXP를 통해 추출할 수 있다.
SELECT * FROM TABLE
WHERE 사무용품이름 REGEXP ('책상|의자')
위 쿼리는 사무용품이름 컬럼에 '책상', '의자' 단일값을 갖는 인스턴스 뿐만 아니라, ('책상','모니터'), ('의자','컴퓨터'), ('책상','의자','컴퓨터') 와 같이 '책상'과 '의자' 값을 적어도 하나 이상 포함하는 다중값의 인스턴스 또한 추출한다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Q. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (LV. 2)
위 SQL 문제에서는 '통풍시트', '열선시트', '가죽시트' 이 세 옵션 중 적어도 하나 이상의 옵션을 포함한 자동차 종류별 개수를 구해야 한다.
가장 먼저, WHERE 조건절에서 REGEXP를 이용해 조건에 맞는 자동차의 종류를 필터한 후에,
집계함수 GROUP BY 와 COUNT를 이용해 자동차 종류의 개수를 세어 자동차 자동차 종류로 오름차순 정렬하여 쿼리를 마무리한다.
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC;

'데이터분석가 > SQL' 카테고리의 다른 글
[해커랭크] Weather Observation Station 20 - 사용자 정의 변수 선언, 중앙값(Median) 구하는 방법 (0) | 2023.03.31 |
---|---|
[해커랭크] Binary Tree Nodes (0) | 2023.03.30 |
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 - CASE WHEN (0) | 2023.03.29 |
[프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.03.06 |
[MySQL] 맥 터미널에서 MySQL Monitor 접속 (0) | 2023.03.03 |
댓글