Saltar al contenido principal
Las funciones de ventana permiten realizar cálculos sobre un conjunto de filas relacionadas con la fila actual. Pueden utilizarse para realizar cálculos similares a los que pueden hacerse con una función de agregación, pero una función de ventana no agrupa las filas en una única salida: se siguen devolviendo las filas individuales.

Funciones de ventana estándar

ClickHouse admite la gramática SQL estándar para ventanas y funciones de ventana. La tabla siguiente muestra qué funcionalidades se admiten actualmente:

Sintaxis

  • PARTITION BY - define cómo dividir un conjunto de resultados en grupos.
  • ORDER BY - define cómo ordenar las filas dentro del grupo durante el cálculo de aggregate_function.
  • ROWS or RANGE - define los límites del marco; aggregate_function se calcula dentro de ese marco.
  • WINDOW - permite que varias expresiones usen la misma definición de ventana.

Funciones que solo pueden usarse como funciones de ventana

Las siguientes funciones solo pueden usarse como funciones de ventana. La mayoría son funciones SQL estándar; lagInFrame, leadInFrame y nonNegativeDerivative son extensiones de ClickHouse.

Ejemplos

Veamos algunos ejemplos de cómo se pueden utilizar las funciones de ventana.

Numerar filas

Funciones de agregación

Compara el salario de cada jugador con el promedio de su equipo.
Compare el salario de cada jugador con el salario máximo de su equipo.

Particionamiento por columna

Límites del marco

Ejemplos reales

Los siguientes ejemplos resuelven problemas habituales en el mundo real.

Salario máximo/total por departamento

Suma acumulada

Media móvil / deslizante (cada 3 filas)

Media móvil / deslizante (cada 10 segundos)

media móvil / deslizante (por 10 días)

La temperatura se almacena con precisión de segundos, pero al usar Range y ORDER BY toDate(ts) formamos un marco de 10 unidades y, como toDate(ts), la unidad es un día.

Referencias

Issues de GitHub

La hoja de ruta para la compatibilidad inicial con las funciones de ventana está en este issue. Todos los issues de GitHub relacionados con las funciones de ventana tienen la etiqueta comp-window-functions.

Pruebas

Estas pruebas contienen ejemplos de la sintaxis admitida actualmente: 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

Documentación de 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

Documentación de 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
Última modificación el 2 de julio de 2026