Bagikan melalui


Klausul WINDOW

Berlaku untuk: centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Klausul jendela memungkinkan Anda mendefinisikan dan memberi nama satu atau beberapa spesifikasi jendela yang berbeda sekali dan membaginya di banyak fungsi jendela dalam kueri yang sama.

Sintaks

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

Parameter

  • window_name

    Pengidentifikasi yang dengannya spesifikasi jendela dapat direferensikan. Pengidentifikasi dalam klausul WINDOW harus unik.

  • window_spec

    Spesifikasi jendela untuk dibagikan di satu atau beberapa fungsi jendela.

Contoh

> 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);
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