MySQL의 **윈도우 함수(Window Function)**는 행(row) 그룹을 기준으로 하여 집계된 결과를 반환하는 함수로, 일반적인 집계 함수와 달리 결과를 그룹별로 나누지 않고 각 행에 대해 여러 값을 계산할 수 있습니다. 즉, 윈도우 함수는 특정 조건에 따라 **슬라이딩 윈도우(이동 창)**를 만들어 행 간의 상호 관계를 계산하는데 유용합니다.

0. 예시 코드 테이블 생성 및 데이터 삽입

예시 코드에 사용될 테이블 생성 및 데이터를 삽입 하는 sql문입니다.

아래 sql문을 복사하여 테이블 생성 및 데이터를 삽입해주세요.

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50),
    salary INT
);

INSERT INTO employees (id, name, department, salary) VALUES
(1, 'John', 'HR', 5000),
(2, 'Jane', 'HR', 6000),
(3, 'Alice', 'IT', 7000),
(4, 'Bob', 'IT', 8000),
(5, 'Charlie', 'Finance', 9000),
(6, 'David', 'Finance', 10000),
(7, 'Eve', 'IT', 7500),
(8, 'Frank', 'HR', 5500);

1. 윈도우 함수의 구조

윈도우 함수는 OVER() 절과 함께 사용되며, 기본 구조는 다음과 같습니다.

SELECT column_name,
       window_fn() OVER (PARTITION BY 그룹 컬럼 ORDER BY 정렬 기준 컬럼 ROWS BETWEEN 범위)
FROM table_name;

OVER() 절의 구조

PARTITION BY

ORDER BY