SQL 조인 및 윈도우 함수

발행: (2026년 3월 3일 오전 01:19 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크만으로는 번역할 본문이 없습니다. 번역이 필요한 텍스트를 그대로 복사해서 알려주시면, 요청하신 대로 마크다운 형식과 코드 블록, URL은 그대로 유지하면서 한국어로 번역해 드리겠습니다.

소개

SQL joins는 관련 열을 기준으로 여러 테이블의 데이터를 결합하는 데 사용됩니다.

Window functions는 현재 행과 관련된 테이블 행 집합에 걸쳐 계산을 수행하여 데이터를 축소하지 않고 행별 집계를 가능하게 합니다.

이 기사에서는 SQL 조인과 윈도우 함수가 어떻게 작동하는지, 언제 사용해야 하는지, 그리고 실제 비즈니스 문제를 어떻게 해결하는지 깊이 있게 배웁니다. 시작해 봅시다.

Types of SQL joins

SQL 조인에는 네 가지 주요 유형이 있습니다.

Inner join

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

Inner Join Example

Business Question

어떤 고객이 주문을 했나요?

두 개의 테이블이 있다고 가정합니다:

  • Customers
  • Orders

Customers & Orders Tables

Sample Data

Query

SELECT c.customer_id,
       c.customer_name,
       o.order_id
FROM   customers c
INNER JOIN orders o
       ON c.customer_id = o.customer_id;

Result

Inner Join Result

Tim Adagala는 주문이 없기 때문에 결과에 나타나지 않습니다.

Left join

왼쪽 테이블의 모든 레코드와 오른쪽 테이블에서 일치하는 행만 반환합니다.

Left Join Diagram

Business Question

주문을 아직 하지 않은 고객을 포함해 모든 고객을 표시하세요.

Query

SELECT c.customer_id,
       c.customer_name,
       o.order_id
FROM   customers c
LEFT  JOIN orders o
       ON c.customer_id = o.customer_id;

Result

Left Join Result

order_idNULL이 표시된 것은 Tim Adagala는 존재하지만 아직 주문을 하지 않았다는 의미입니다.

Right join

오른쪽 테이블의 모든 레코드와 왼쪽 테이블에서 일치하는 행만 반환합니다 (LEFT JOIN의 역순).

Right Join Diagram

Business Question

모든 주문과 해당 고객을 표시하세요(가능한 경우).
모든 주문을 유지하고, 고객 정보가 있으면 연결합니다.

Query

SELECT c.customer_id,
       c.customer_name,
       o.order_id
FROM   customers c
RIGHT  JOIN orders o
       ON c.customer_id = o.customer_id;

Result

Right Join Result

Full join

두 테이블 모두에서 일치 여부와 관계없이 모든 레코드를 반환합니다.

Full Join Diagram

Business Question

모든 고객과 모든 주문을 표시하고, 양쪽에 매치되지 않은 레코드도 포함하세요.

Query

SELECT c.customer_id,
       c.customer_name,
       o.order_id
FROM   customers c
FULL   OUTER JOIN orders o
       ON c.customer_id = o.customer_id;

Output

Result Image

It looks like the text you’d like translated is missing—only a URL‑encoded image link was provided. Could you please share the full passage (including the “> Source: …” line) that you want translated into Korean? That way I can keep the source link unchanged and translate the content as requested.

Source:

윈도우 함수

윈도우 함수는 현재 행과 관련된 행 집합에 대해 계산을 수행하지만, GROUP BY 절처럼 결과를 단일 행으로 축소하지 않습니다.

윈도우 함수 구문

function_name(column)
OVER (
    PARTITION BY column   -- optional
    ORDER BY column       -- sometimes required
)
  • OVER() – 연산을 수행할 행들의 윈도우를 정의합니다. 이 절은 필수입니다.
  • PARTITION BY – (선택 사항) 데이터를 논리적 그룹으로 나눕니다.
  • ORDER BY – (때때로 필요) 각 파티션 내부의 행 순서를 정의합니다. 다음과 같은 경우에 필요합니다:
    • 순위 함수
    • 탐색 함수
    • 누적 합계
0 조회
Back to Blog

관련 글

더 보기 »

SQL 조인 및 윈도우 함수

SQL 조인 및 윈도우 함수 !tonny otieno https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uplo...

PostgreSQL 조인 및 윈도우 함수

PostgreSQL에서 JOINS 이해하기 JOINS는 관련된 컬럼을 통해 여러 테이블이나 뷰의 데이터를 병합할 수 있게 해줍니다. 조인 유형의 선택은 …