https://school.programmers.co.kr/learn/courses/30/lessons/151137
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석
난이도 : level 2
문제 요구사항:
CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.
문제 풀이
GROUP BY를 사용해서 CAR_TYPE별로 묶기
1. LIKE를 사용
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
2. INSTR를 사용
INSTR를 사용해서 특정 문자열이 들어있는지 확인하는 방법이다.
INSTR함수는 특정 문자열이 다른 문자열 안에서 어디에 위치해 있는지를 나타내는 함수입니다. 문자열이 존재하지 않으면 0을 반환하고, 존재하면 그 문자열이 시작되는 위치(1부터 시작)를 반환한다.
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WEHRE
INSTR(OPTIONS, '통풍시트') > 0 OR
INSTR(OPTIONS, '열선시트') > 0 OR
INSTR(OPTIONS, '가죽시트') > 0
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE
3. REGEXP를 사용
REGEXP 함수는 SQL에서 정규 표현식(Regular Expression)을 사용하여 문자열 패턴을 검색하는 함수이다. INSTR처럼 단순히 특정 문자열을 찾는 것보다 더 복잡한 패턴을 사용할 수 있다는 장점이 있다. 주로 패턴 매칭이나 특정 규칙을 따르는 문자열을 찾고자 할 때 유용하다.
ex) OPTIONS REGEXP '[0-9]{3}'는 OPTIONS 열에서 3자리 숫자가 포함된 항목을 찾으라는 의미.
INSTR와의 차이점
- INSTR는 단순히 문자열이 존재하는지 확인할 때 빠르고 간단하다.
- REGEXP는 좀 더 복잡한 패턴을 검사할 수 있지만, 성능이 상대적으로 느릴 수 있다. 복잡한 패턴일수록 성능에 더 많은 영향을 미친다.
SELECT CAR_TYPE, COUNTCAR_TYPE AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE
OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE'하루 30분 SQL 공부하기' 카테고리의 다른 글
| [MySQL] 프로그래머스 진료과별 총 예약 횟수 출력하기 (0) | 2024.10.15 |
|---|---|
| [MySQL] 프로그래머스 성분으로 구분한 아이스크림 총 주문량 (1) | 2024.10.15 |
| [SQL 코테준비] 가격이 제일 비싼 식품의 정보 출력하기, 잡은 물고기 중 가장 큰 물고기의 길이 구하기 프로그래머스 (0) | 2024.10.10 |
| [MySQL] 프로그래머스 코딩테스트 문제 풀이 SELECT 과일로 만든 아이스크림 고르기, 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.10.08 |
| [SQL/DFL] SELECT문의 WHERE절과 논리, 비교, SQL 연산자 (2) | 2024.10.02 |