Именованные окна
Для того чтобы не писать каждый раз сложные выражения для задания окна, имя окна можно задать в предложении WINDOW
.Имя окна может быть использовано в предложении OVER
для ссылки на определение окна, кроме того оно может бытьиспользовано в качестве базового окна для другого именованного или встроенного (в предложении OVER
) окна.Окна с рамкой (с предложениями RANGE
и ROWS
) не могут быть использованы в качестве базового окна, но могут бытьиспользованы в предложении OVER window_name
. Окно, которое использует ссылку на базовое окно, не может иметьпредложение PARTITION BY
и не может переопределять сортировку с помощью предложения ORDER BY
.
SELECT
id,
department,
salary,
count(*) OVER w1,
first_value(salary) OVER w2,
last_value(salary) OVER w2,
sum(salary) over (w2 ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS s
FROM employee
WINDOW w1 AS (PARTITION BY department),
w2 AS (w1 ORDER BY salary)
ORDER BY department, salary;