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

이정진·2023년 1월 26일
1

SQL

목록 보기
20/23
post-thumbnail

자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

난이도 구분 : Level 2

문제

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

문제 풀이

  1. CAR_TYPE으로 그룹화 시키기 + 종류별 집계함수 사용

SQL

SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
GROUP BY CAR_TYPE;

결과

  1. 옵션 리스트에서 '통풍시트', '열선시트', 가죽시트' 중 하나 이상이 포함된 경우
    SQL
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE;

결과

  1. 자동차 종류 기준 오름차순 정렬
    SQL
SELECT CAR_TYPE, COUNT(CAR_TYPE) 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;

결과

정답 SQL

SELECT CAR_TYPE, COUNT(CAR_TYPE) 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;

풀이 과정에서 기억할 점

IN과 LIKE

IN
OR 조건을 한 번에 묶어서 표현할 때 용이

사용 형태

SELECT 칼럼명
FROM 테이블명
WHERE 칼럼명 IN ('데이터1', '데이터2', '데이터3')

사용 예시

SELECT CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE IN ('세단', 'SUV')

사용 예시에 따른 결과

LIKE
특정 문자 또는 문자열을 포함하고 있는 값을 검색하고 싶을 때 사용

사용 형태

SELECT 칼럼명
FROM 테이블명
WHERE 칼럼명 LIKE '특정 문자열'

사용 예시

SELECT CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%시트%'

사용 예시에 따른 결과

와일드 문자 종류

  • % : 해당 구간의 0개 이상의 문자열과 대치됨
  • _ : 한 개의 문자와 대치됨

느낀 점

GROUP BY를 사용하는 것을 연습해야 할 것 같아 풀어 보았는데, 상대적으로 쉬운 문제였다.

0개의 댓글