몸과 마음이 건전한 SW 개발자

프로그래머스 Lv. 2 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 SQL 본문

SQL

프로그래머스 Lv. 2 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 SQL

스위태니 2024. 1. 2. 11:33

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/151137

 

프로그래머스

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

programmers.co.kr

정답 코드 1

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;

정답 코드 2

SELECT
    CAR_TYPE,
    COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP "열선시트|통풍시트|가죽시트"
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;

Key Point

REGEXP (또는 RLIKE) 함수

문법 : expression REGEXP pattern

  • expression: 검사할 문자열 또는 열입니다.
  • pattern: expression이 일치해야 하는 정규 표현식입니다.

설명 : REGEXP 함수는 SQL에서 정규 표현식을 사용하여 문자열이 특정 패턴과 일치하는지 검사할 때 사용됩니다. 이 함수는 텍스트 데이터에서 복잡한 검색을 수행할 수 있게 해주며, 특히 패턴이 포함된 문자열을 찾을 때 유용합니다.

  • 동작:
    • REGEXP는 주어진 정규 표현식 pattern과 expression이 주어진 문자열에서 일치하는지 여부를 검사합니다.
    • 결과는 불리언입니다. 패턴이 문자열과 일치하면 참(true), 일치하지 않으면 거짓(false)을 반환합니다.

예시 : 

  • 기본 사용 예시: 이 예시는 문자열 'hello world'가 'hello'라는 단어를 포함하고 있는지 검사합니다. 결과는 참입니다.
SELECT 'hello world' REGEXP 'hello';  -- 결과는 1 (true)
  • 데이터베이스에서 복잡한 패턴 검색: 이 쿼리는 Products 테이블에서 'a'로 시작하고 'e'로 끝나는 모든 제품 이름을 찾습니다. '^'는 문자열의 시작을, '.*'는 0개 이상의 임의의 문자를, '$'는 문자열의 끝을 나타냅니다.
SELECT ProductName
FROM Products
WHERE ProductName REGEXP '^a.*e$';
  • OR 조건으로 여러 패턴 검색: 이 쿼리는 'interesting' 또는 'important'라는 단어가 포함된 모든 댓글을 찾습니다. '|'는 논리적 'OR'을 나타냅니다.
SELECT
    Comment
FROM Comments
WHERE Comment REGEXP 'interesting|important';

 

주의사항 :

  • 성능 고려 : REGEXP는 복잡한 계산을 수행할 수 있으므로, 대규모 데이터셋에서 사용할 때는 성능에 주의해야 합니다.
  • 정규 표현식 : 정규 표현식은 매우 강력하지만 복잡할 수 있습니다. 사용하기 전에 정규 표현식을 잘 이해하고 테스트하는 것이 중요합니다.
  • 데이터베이스 지원 : 모든 SQL 데이터베이스 시스템이 REGEXP를 지원하는 것은 아니므로, 사용하려는 시스템이 이 기능을 지원하는지 확인해야 합니다.

태그

programmers, 프로그래머스, SQL 고득점 Kit

SELECT

SUM, MAX, MIN

GROUP BY

JOIN

String, Date