Окна диапазона
Окна диапазона объединяют строки в соответствии с заданным порядком.Например, если рамка окна задана выражением RANGE 5 PRECEDING
, то будет сгенерировано перемещающееся окно, включающее предыдущие строки группы, значение которых меньше текущего не более чем на 5
.
SELECT
id,
salary,
SUM(salary) OVER() AS s1,
SUM(salary) OVER(ORDER BY salary) AS s2,
SUM(salary) OVER(ORDER BY salary
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS s3,
SUM(salary) OVER(ORDER BY salary
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS s4,
SUM(salary) OVER(ORDER BY salary
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS s5,
SUM(salary) OVER(ORDER BY salary
RANGE BETWEEN CURRENT ROW AND 1 FOLLOWING) AS s6,
SUM(salary) OVER(ORDER BY salary
RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS s7,
SUM(salary) OVER(ORDER BY salary RANGE 1 PRECEDING) AS s8
FROM
employee
ID SALARY S1 S2 S3 S4 S5 S6 S7 S8 ------------------------------------------------------------------------- 3 8.00 49.00 8.00 8.00 49.00 49.00 17.00 17.00 8.00 4 9.00 49.00 17.00 17.00 41.00 49.00 29.00 37.00 17.00 1 10.00 49.00 37.00 37.00 32.00 49.00 20.00 29.00 29.00 5 10.00 49.00 37.00 37.00 32.00 49.00 20.00 29.00 29.00 2 12.00 49.00 49.00 49.00 12.00 49.00 12.00 12.00 12.00
Для того чтобы понять, какие значения будут входить в диапазон, можно использовать функции FIRST_VALUE и LAST_VALUE.Это помогает увидеть диапазоны окна и проверить, корректно ли установлены параметры.