SQL 조인 및 윈도우 함수

발행: (2026년 3월 11일 오후 12:09 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Joins

조인은 두 개 이상의 테이블에서 관련된 열(보통 기본 키와 외래 키)을 기준으로 행을 결합할 수 있게 해줍니다.

Inner Join

두 테이블 모두에서 일치하는 값이 있는 행만 반환합니다.

SELECT *
FROM sales s
INNER JOIN products p
  ON s.product_id = p.product_id;

Left Join

왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 반환합니다. 오른쪽 테이블에 일치하지 않는 행은 NULL 값을 가집니다.

SELECT *
FROM sales s
LEFT JOIN products p
  ON s.product_id = p.product_id;

Right Join

오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 행을 반환합니다. 왼쪽 테이블에 일치하지 않는 행은 NULL 값을 가집니다.

SELECT *
FROM sales s
RIGHT JOIN products p
  ON s.product_id = p.product_id;

Other Join Types

  • Full Join – 두 테이블의 모든 행을 반환하며, 일치하지 않는 부분은 NULL 로 표시됩니다.
  • Self‑Join – 서로 다른 별칭을 사용해 테이블 자체와 조인합니다.

가장 일반적으로 사용되는 조인은 inner joinleft join입니다.


Window Functions

윈도우 함수는 현재 행과 관련된 행 집합(이를 윈도우라고 함) 전체에 걸쳐 계산을 수행합니다. 집계 함수와 달리 윈도우 함수는 행을 축소하지 않으며, 각 행마다 값을 반환합니다.

General Syntax

function_name() OVER (
    PARTITION BY column
    ORDER BY column
)
  • function_name() – 계산식(예: ROW_NUMBER, RANK, SUM, DENSE_RANK, LAG, LEAD).
  • OVER () – 윈도우를 정의합니다.
  • PARTITION BY – 데이터를 그룹으로 나눕니다.
  • ORDER BY – 각 그룹 내 행의 순서를 지정합니다.

Common Window Functions

  • ROW_NUMBER() – 행에 고유한 순차 정수를 할당합니다.
  • RANK() – 동점이 있을 경우 간격을 두고 순위를 할당합니다.
  • DENSE_RANK() – 간격 없이 순위를 할당합니다.
  • SUM() – 누적 합계를 계산합니다.
  • LAG() – 이전 행의 데이터를 가져옵니다.
  • LEAD() – 다음 행의 데이터를 가져옵니다.

윈도우 함수는 단순 집계를 넘어 순위 매기기, 누적 합계, 행별 비교와 같은 작업을 가능하게 하며, 원본 데이터 세트 구조를 유지합니다.

0 조회
Back to Blog

관련 글

더 보기 »

Power BI를 PostgreSQL 데이터베이스에 연결

소개 Power BI는 Microsoft에서 제공하는 비즈니스 인텔리전스 및 데이터 시각화 도구로, 사용자가 다양한 데이터 소스에 연결하고 데이터를 변환하고 수정할 수 있게 해줍니다…

Bitemporal Data Model에 대하여

이 게시물은 두 개의 타임라인을 사용하여 시간‑관련 정보를 나타내는 일종의 temporal data model인 Bitemporal Data Model에 대한 연구를 요약합니다. Tempora...