'SQL로 맛보는 데이터 전처리 분석'으로 공부한 내용을 정리하였다.
# JOIN
여러 가지 테이블로 나뉜 정보를 조합하기 위해 사용하는 테이블 결합 함수
1) LEFT JOIN (LEFT OUTER JOIN)
LEFT JOIN은 FROM 절의 테이블을 기준으로 매칭되는 정보 출력
ex) order 테이블의 정보는 모두 출력되고, cutsomers 테이블의 고객 ID 중 order에 존재하는 고객 ID 정보만 결합
SELECT *
FROM order LEFT JOIN customers
ON order.고객 ID = customers.고객 ID
2) INNER JOIN
INNER JOIN은 두 가지 테이블에 공통으로 존재하는 정보만 출력
ex) order 테이블과 customers 테이블에 공통으로 존재하는 고객 id 정보 출력
SELECT *
FROM order INNER JOIN customers
ON order.고객 ID = customers.고객 ID
3) FULL JOIN
FULL JOIN은 TABLE_A 또는 TABLE_B와 매칭되는 레코드 모두 출력
ex) order 테이블과 customers 테이블의 모든 정보 출력
SELECT *
FROM order FULL JOIN customers
ON order.고객 ID = customers.고객 ID
# CASE WHEN
CASE WHEN 구문은 조건에 따라 값을 다르게 출력하고 싶은 경우 사용
ex) 조건 1을 만족하는 경우 -> 결과 1 출력
조건 2를 만족하는 경우 -> 결과 2 출력
두 조건 모두 만족하지 않는 경우 -> 결과 3 출력
SELECT CASE WHEN 조건 1 THEN 결과 1
WHEN 조건 2 THEN 결과 2 ELSE 결과 3 END
FROM DB 명.테이블 명;
# RANK 함수
데이터에 순위를 매기는 데 사용되는 함수
- RANK() : 동점인 경우 같은 등수로 계산, 데이터 세트 고려해 다음 등수 매김
- DENSE_RANK() : 동점인 경우 같은 등수로 계산, 바로 다음 수로 순위 매김
- ROW_NUMBER(): 동점인 경우 서로 다른 등수로 계산
ex) 구매 금액으로 순위 매기기
SELECT *,
RANK() OVER(ORDER BY 구매 금액) AS RANK,
ROW_NUMBER() OVER(ORDER BY 구매 금액) AS ROW_NUMBER,
DENSE_RANK() OVER(ORDER BY 구매 금액) AS DENSE_RANK
FROM TABLE;
고객 번호 | 구매 금액 | RANK | ROW_NUMBER | DENSE_RANK |
A | 1000 | 1 | 1 | 1 |
B | 400 | 2 | 2 | 2 |
C | 200 | 4 | 4 | 3 |
D | 400 | 2 | 3 | 2 |
출처 : SQL로 맛보는 데이터 전처리 분석
'Study > SQL' 카테고리의 다른 글
[SQL로 맛보는 데이터 전처리 분석] SQL 문법 (1) (1) | 2024.01.04 |
---|