[SQL] 프로그래머스 ORDER BY추가내용, JOIN, SUM 활용하기, REGEXP정규표현식

Stella·2023년 7월 26일

1. ORDER BY 컬럼순서 붙여서 사용하기

ORDER BY 2, 1
ORDER BY 1, 2, 3
컬럼에 숫자를 붙여서 사용할 수 있다.

2. JOIN

두개의 테이블을 활용할 때 필요하다. 두개의 테이블이 공통적으로 가지고 있는 값을 활용하여 JOIN을 해준다.

SELECT A.PRODUCT_CODE, sum(B.SALES_AMOUNT * A.PRICE) AS SALES
FROM PRODUCT A           
JOIN OFFLINE_SALE B ON A.PRODUCT_ID = B.PRODUCT_ID
GROUP BY 1
ORDER BY SALES DESC, PRODUCT_CODE ASC;

- SUM기능도 마찬가지로 B.SALES_AMOUNT * A.PRICE와 같이 SUM을 통해 계산도 가능하다.

3. REGEXP 정규표현식

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

위의 코드처럼 LIKE를 사용해서 일일히 지정하는 방법도 있지만,
정규표현식을 사용하여 간단하게 표현 가능하다.

- 정규표현식이란?
특정한 규칙을 가진 문자열의 집합을 표현하는데 쓰이는 형식 언어이다.
문자열을 처리하는 방법 중의 하나, 특정한 조건의 문자를 '검색'하거나 '치환'할 때 사용한다.

SELECT 컬럼명
FROM 테이블명 WHERE 컬럼명 REGEXP '정규표현식';

으로 사용 가능하다.

^ : 시작
* : 끝
[abc] : a, b, c 중 하나
^[abc] : a, b, c 중 하나로 시작하는 문자
^[abc].* : a, b, c 중 하나로 시작하는 문자열
[^abc] : a, b, c 전부 제외
\d : 하나의 숫자
. : 문자
.* : 문자의 반복 즉 문자열
[a-z] : a부터 z까지
[abc]$ : a, b, c 중 하나로 끝나는 문자
.*[abc]$ : a, b, c 중 하나로 끝나는 문자열

* 프로그래머스 문제 예제

SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC
profile
공부 기록

0개의 댓글