Koo's.Co

[Programmers] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 - Lv.2 본문

PS/Programmers - SQL

[Programmers] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 - Lv.2

kth321 2023. 2. 20. 01:15
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

CAR_RENTAL_COMPANY_CAR

문제

CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.

SELECT CAR_TYPE, COUNT(*) AS CARS
  FROM CAR_RENTAL_COMPANY_CAR
 WHERE OPTIONS LIKE "%통풍시트%"
    OR OPTIONS LIKE "%열선시트%"
    OR OPTIONS LIKE "%가죽시트%"
 GROUP BY CAR_TYPE
 ORDER BY CAR_TYPE ASC

이 문제는 CAR_TYPE에 따라 GROUP BY한 결과를 구하면 되는 문제입니다.

주의할 점은 HAVING이 아니라 WHERE을 통해 먼저 조건에 맞는 데이터를 선정해야 한다는 점입니다.

WHERE은 처음에 테이블에서 데이터를 선택할 때 조건에 맞는 데이터를 선택하는 명령어입니다.

반면, GROUP BY는 집계된 데이터를 나타내기 때문에 HAVING을 이용해 포함되는 옵션을 선택할 수 없게 됩니다.

그렇기 때문에 먼저 WHERE을 이용해 조건에 맞는 데이터를 선정해 주고, 이후에 GROUP BY를 이용해 CAR_TYPE에 따른 자동차 수를 구해주어야 합니다.

Comments