메인 콘텐츠로 건너뛰기
윈도 함수를 사용하면 현재 행과 관련된 행 집합 전체에 걸쳐 계산을 수행할 수 있습니다. 집계 함수로 수행하는 계산과 비슷한 계산을 수행하는 데 사용할 수 있지만, 윈도 함수는 행을 하나의 출력으로 그룹화하지 않으므로 개별 행이 그대로 반환됩니다.

표준 윈도우 함수

ClickHouse는 윈도우 및 윈도 함수에 대한 표준 SQL 문법을 지원합니다. 아래 표는 현재 지원되는 기능을 보여줍니다:

구문

  • PARTITION BY - 결과 집합을 어떻게 그룹으로 나눌지 정의합니다.
  • ORDER BY - aggregate_function을 계산할 때 그룹 내 행의 순서를 정의합니다.
  • ROWS or RANGE - 프레임의 경계를 정의하며, aggregate_function은 프레임 내에서 계산됩니다.
  • WINDOW - 여러 표현식에서 동일한 윈도우 정의를 사용할 수 있도록 합니다.

윈도 함수로만 사용할 수 있는 함수

다음 함수는 윈도 함수로만 사용할 수 있습니다. 대부분은 표준 SQL 함수이며, lagInFrame, leadInFrame, nonNegativeDerivative는 ClickHouse 확장 기능입니다.

예시

윈도 함수를 사용하는 몇 가지 예시를 살펴보겠습니다.

행 번호 지정

집계 함수

각 선수의 급여를 소속 팀의 평균 급여와 비교합니다.
각 선수의 급여를 소속 팀의 최고 급여와 비교합니다.

컬럼별 파티셔닝

프레임 경계 지정

실제 사용 예시

다음 예시는 실제 환경에서 자주 접하는 문제를 해결하는 방법을 보여줍니다.

부서별 최대/총 급여

누적합

이동 평균 / 슬라이딩 평균(3행 기준)

이동 평균 / 슬라이딩 평균(10초 기준)

이동 평균 / 슬라이딩 평균(10일 단위)

온도는 초 단위 정밀도로 저장되지만, RangeORDER BY toDate(ts)를 사용하면 크기가 10인 프레임(frame)이 형성되고, toDate(ts)를 사용하므로 단위는 일입니다.

참고

GitHub 이슈

윈도우 함수의 초기 지원 로드맵은 이 이슈에 정리되어 있습니다. 윈도우 함수와 관련된 모든 GitHub 이슈에는 comp-window-functions 레이블이 지정되어 있습니다.

테스트

다음 테스트에는 현재 지원되는 문법의 예시가 포함되어 있습니다. https://github.com/ClickHouse/ClickHouse/blob/master/tests/performance/window_functions.xml https://github.com/ClickHouse/ClickHouse/blob/master/tests/queries/0_stateless/01591_window_functions.sql

Postgres 문서

https://www.postgresql.org/docs/current/sql-select.html#SQL-WINDOW https://www.postgresql.org/docs/devel/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS https://www.postgresql.org/docs/devel/functions-window.html https://www.postgresql.org/docs/devel/tutorial-window.html

MySQL 문서

https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html https://dev.mysql.com/doc/refman/8.0/en/window-functions-frames.html
마지막 수정일 2026년 6월 25일