TIL

TIL (6) - SQLD

SLug801 2026. 5. 29. 17:26

SQLD 대비 주요개념 정리

 

 

JOIN

 

JOIN 의 종류 

 

1. INNER JOIN

교집합 

기준 테이블과 JOIN 테이블의 중복된 값을 보여준다.

두 테이블에 모두 데이터가 있어야한다.

 

 

2. (LEFT)OUTER JOIN

조인 기준이 되는 LEFT 테이블을 모두 표시.

공통부분 + LEFT에는 있지만 RIGHT 테이블에 없는 값은 NULL로 채운다. 

 

 

3. FULL OUTER JOIN

합집합

A 테이블의 데이터 , B 테이블의 데이터를 모두 SELECT

양쪽에 데이터가 있는경우 정상 매칭,

한쪽만 없는경우 NULL 로 채워서 출력.

 

 

4. CROSS JOIN

모든 경우의수 (N x M) 개의 행 출력

ANSI : FROM T1 CROSS JOIN T2

ORACLE : FROM T1, T2 - WHERE 절에 조인조건이 없어야함

 

 

※ON

두 테이블은 어떤 기준으로 연결할지 지정하는 조인 조건절 

테이블을 합치기 전 연결 고리를 만들어주는 역할

 

 

 

Window Function (윈도우 함수) 

순위함수

RANK

ORDER BY를 포함한 쿼리문에서 특정 컬럼의 순위를 매기는 함수이다.

PARTITION 내에서도 가능, 전체 데이터에 대한 순위도 가능하다.

동일한 값은 같은 순위를 부여하고, 중간순위를 스킵한다.

ex)1,2,2,4,5 

 

DENSE_RANK

RANK와 작동법은 동일하지만, 동일값에 대해서 같은 순위를 부여하고 중간순위를 비우지 않는다.

ex)1,2,2,3,4  

 

ROW_NUMBER

순위의 개념이 아닌걸로 생각하면 쉽다.

동일 값이여도 고유한 순위를 부여한다.

쉽게말해 몇번째 행인지를 부여한다.

그룹 내 행 순서 함수

FIRST_VALUE

파티션 별 윈도우에서 가장 먼저 나온값을 구한다. 공동등수 인정 X, MIN 함수를 쓰는것과 결과가 동일

 

LAST_VALUE

파티션 별 윈도우에서 가장 마지막에 나온값을 구한다. 공동등수 인정 X, MAX 함수를 쓰는것과 결과가 동일

 

LAG

현재 행을 기준으로 이전(과거) 행의 값을 가져온다.

 

LEAD

현재 행을 기준으로 이후(미래) 행의 값을 가져온다.

 

 

GRUOP BY 와 PARTIRION BY의 차이점

  GRUOP BY PARTITION BY (with OVER)
행의 수 그룹별로 압축해서 감소 기존 테이블의 행수 유지
결과 그룹당 1개 행 데이터 행 옆에 집계 값이 붙음
조회 집계기준 컬럼과 집계함수만 조회가능 상세 컬럼도 자유롭게 조회 가능
쿼리 위치 FROM 또는 WHERE 뒤에 독립적 SELET 절 내에서 윈도우 함수와 함께

 

 

그룹 내 비율 함수

PERCENT_RANK

파티션별로 가장 먼저 나오는 값을 0 , 가장 마지막에 나오는 값을 1로 해서 행 순서별 백분율을 출력

 

CUME_DIST

파티션별 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적 백분율을 출력

EX)

60    0.2

70    0.4

80    0.6

90    0.8

100   1

 

 

NTILE

파티션별 전체 건수를 N 등분한 결과를 출력

ex) 14 / 4 - 4,4,3,3