Поделиться через


предложение WINDOW

Область применения:флажок Databricks SQL флажок Databricks Runtime

Предложение "Окно" позволяет определить и назвать одну или несколько отдельных спецификаций окон один раз и предоставить им общий доступ ко многим функциям окна в одном запросе.

Синтаксис

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

Параметры

  • window_name

    Идентификатор, с помощью которого можно ссылаться на спецификацию окна. Идентификатор должен быть уникальным в предложении WINDOW.

  • window_spec

    Спецификация окна, которой делятся между одной или несколькими функциями окна.

Примеры

> 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 salary,
         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);
1.3    27000.0 23000   29000   3
1.0    25500.0 21000   29000   4
1.4    25000.0 21000   29000   5
1.4    25200.0 21000   30000   5
1.4    22600.0 10000   30000   5
1.4    23800.0 10000   35000   5
1.4    26000.0 10000   35000   5
1.0    26750.0 10000   35000   4
1.0    25666.7 10000   35000   3