문제
풀이
📌 SELECT CAR_TYPE, COUNT(*) AS CARS
CAR_TYPE, 결과값 개수의 별칭은 CARS
📌 FROM CAR_RENTAL_COMPANY_CAR
CAR_RENTAL_COMPANY_CAR 테이블에서
📌 WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%
LIKE '%옵션%' 옵션이라는 말이 들어가면 해당.
옵션 중 하나 이상만 포함하면 되기 때문에 OR.
※ WHERE OPTIONS IN ('통풍시트', '열선시트', '가죽시트')가 오답인 이유
위 코드는 옵션으로 통풍시트만 있거나, 열선시트만 있거나, 가죽시트만 있어야 그 결과값이 나옵니다.
즉, 차량 옵션으로 '통풍시트', '네비게이션'가 있을때, 비록 '통풍시트'가 있지만 네비게이션 때문에 조회되지 않습니다.
📌 GROUP BY CAR_TYPE
CAR_TYPE별로 그룹화
📌 ORDER BY CAR_TYPE ASC
CAR_TYPE로 오름차순 정렬
정답
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;
오답 이유
WHERE IN절을 사용하려 했다.
IN안에 절은 찾으려고 하는 값과 똑같아야 한다.
문제 안에는 값이 하나만 있는 것이 아니라 여러 값이 들어 있다.
IN은 LIKE처럼 %이 안되고 무조건 완전 일치하는 값을 찾는다.
WHERE IN
WHERE IN 절은 주어진 값 집합 중 하나와 일치하는 레코드를 검색하고, 여러 값을 검색할 때 유용
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ...);
문제에 적용을 한다면 아래처럼 하는 게 맞을 듯하다..
하지만 OPTIONS에 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 이렇게 한 줄로 들어가 있어서 값이 안나오는 것 같다.
관련 예시를 찾아보면 CAR마다 OPTIONS에 각 하나의 옵션이 들어가 있다면 나왔을 듯예를들어,
CAR | OPTIONS |
A_CAR | 주차감지센서 |
B_CAR | 스마트키 |
C_CAR | 네비게이션 |
D_CAR | 통풍시트 |
이러면 D_CAR가 나옴..
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
-- 이렇게 열이름에서 '통풍시트','열선시트','가죽시트' 가지고 있는 걸 찾게 해야 함..
WHERE OPTIONS IN ('통풍시트','열선시트','가죽시트')
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
참고링크 : https://jh-tr.tistory.com/104
참고링크
'알고리즘 > SQL 풀이' 카테고리의 다른 글
[MySQL] 루시와 엘라 찾기 (1) | 2023.12.12 |
---|---|
[MySQL] 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.11.13 |
[MySQL] 상품 별 오프라인 매출 구하기 (0) | 2023.10.18 |
[MySQL] 진료과별 총 예약 횟수 출력하기 (0) | 2023.10.17 |
[MySQL] 입양 시각 구하기(1) (1) | 2023.10.16 |
문제
풀이
📌 SELECT CAR_TYPE, COUNT(*) AS CARS
CAR_TYPE, 결과값 개수의 별칭은 CARS
📌 FROM CAR_RENTAL_COMPANY_CAR
CAR_RENTAL_COMPANY_CAR 테이블에서
📌 WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%
LIKE '%옵션%' 옵션이라는 말이 들어가면 해당.
옵션 중 하나 이상만 포함하면 되기 때문에 OR.
※ WHERE OPTIONS IN ('통풍시트', '열선시트', '가죽시트')가 오답인 이유
위 코드는 옵션으로 통풍시트만 있거나, 열선시트만 있거나, 가죽시트만 있어야 그 결과값이 나옵니다.
즉, 차량 옵션으로 '통풍시트', '네비게이션'가 있을때, 비록 '통풍시트'가 있지만 네비게이션 때문에 조회되지 않습니다.
📌 GROUP BY CAR_TYPE
CAR_TYPE별로 그룹화
📌 ORDER BY CAR_TYPE ASC
CAR_TYPE로 오름차순 정렬
정답
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;
오답 이유
WHERE IN절을 사용하려 했다.
IN안에 절은 찾으려고 하는 값과 똑같아야 한다.
문제 안에는 값이 하나만 있는 것이 아니라 여러 값이 들어 있다.
IN은 LIKE처럼 %이 안되고 무조건 완전 일치하는 값을 찾는다.
WHERE IN
WHERE IN 절은 주어진 값 집합 중 하나와 일치하는 레코드를 검색하고, 여러 값을 검색할 때 유용
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ...);
문제에 적용을 한다면 아래처럼 하는 게 맞을 듯하다..
하지만 OPTIONS에 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 이렇게 한 줄로 들어가 있어서 값이 안나오는 것 같다.
관련 예시를 찾아보면 CAR마다 OPTIONS에 각 하나의 옵션이 들어가 있다면 나왔을 듯예를들어,
CAR | OPTIONS |
A_CAR | 주차감지센서 |
B_CAR | 스마트키 |
C_CAR | 네비게이션 |
D_CAR | 통풍시트 |
이러면 D_CAR가 나옴..
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
-- 이렇게 열이름에서 '통풍시트','열선시트','가죽시트' 가지고 있는 걸 찾게 해야 함..
WHERE OPTIONS IN ('통풍시트','열선시트','가죽시트')
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
참고링크 : https://jh-tr.tistory.com/104
참고링크
'알고리즘 > SQL 풀이' 카테고리의 다른 글
[MySQL] 루시와 엘라 찾기 (1) | 2023.12.12 |
---|---|
[MySQL] 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.11.13 |
[MySQL] 상품 별 오프라인 매출 구하기 (0) | 2023.10.18 |
[MySQL] 진료과별 총 예약 횟수 출력하기 (0) | 2023.10.17 |
[MySQL] 입양 시각 구하기(1) (1) | 2023.10.16 |