cláusula WINDOW

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

La WINDOW cláusula define y asigna un nombre a una o varias especificaciones de ventana distintas una vez para que pueda compartirlas en muchas funciones de ventana en la misma consulta.

Sintaxis

WINDOW { window_name AS window_spec } [, ...]

Parámetros

  • window_name

    Identificador mediante el que se puede hacer referencia a la especificación de ventana. El identificador debe ser único dentro de la cláusula WINDOW.

  • window_spec

    Especificación de ventana que se va a compartir entre una o varias funciones de ventana.

Condiciones de error comunes

Ejemplos

> CREATE TABLE employees
   (name STRING, dept STRING, salary INT, age INT);
> INSERT INTO employees
   VALUES ('Lisa', 'Sales', 10000, 35),
          ('Evan', 'Sales', 32000, 38),
          ('Fred', 'Engineering', 21000, 28),
          ('Alex', 'Sales', 30000, 33),
          ('Tom', 'Engineering', 23000, 33),
          ('Jane', 'Marketing', 29000, 28),
          ('Jeff', 'Marketing', 35000, 38),
          ('Paul', 'Engineering', 29000, 23),
          ('Chloe', 'Engineering', 23000, 25);

> SELECT round(avg(age) OVER win, 1) AS avgage,
         round(avg(salary) OVER win, 1) AS avgsalary,
         min(salary) OVER win AS minsalary,
         max(salary) OVER win AS maxsalary,
         count(1) OVER win AS numEmps
    FROM employees
    WINDOW win AS (ORDER BY age
                   ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING);
25.3    27000.0 23000   29000   3
26.0    25500.0 21000   29000   4
27.4    25000.0 21000   29000   5
29.4    25200.0 21000   30000   5
31.4    22600.0 10000   30000   5
33.4    23800.0 10000   35000   5
35.4    26000.0 10000   35000   5
36.0    26750.0 10000   35000   4
37.0    25666.7 10000   35000   3

-- Duplicate window names.
> SELECT sum(salary) OVER w FROM employees
    WINDOW w AS (ORDER BY salary), w AS (ORDER BY age);
  Error: INVALID_SQL_SYNTAX