適用対象:
Databricks SQL
Databricks Runtime
WINDOW句では、1 つ以上の異なるウィンドウ仕様を 1 回定義して名前を付け、同じクエリ内の複数のウィンドウ関数で共有できるようにします。
構文
WINDOW { window_name AS window_spec } [, ...]
パラメーター
window_name
ウィンドウ仕様の参照が可能になる識別子。 識別子は、 WINDOW 句内で一意である必要があります。
window_spec
1 つ以上のウィンドウ関数間で共有するウィンドウ仕様。
一般的なエラー状態
- INVALID_SQL_SYNTAX。INVALID_WINDOW_REFERENCE
- INVALID_SQL_SYNTAX。REPETITIVE_WINDOW_DEFINITION
- INVALID_SQL_SYNTAX。UNRESOLVED_WINDOW_REFERENCE
- MISSING_WINDOW_SPECIFICATION
例
> 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