ограниченная Совокупная сумма в Netezza

Я знаю, как использовать кумулятивную сумму в ее базовой формулировке с таким кодом:

Table Name: Employees
dept_id salary
-------------
10     1000
10     1000
10     2000
10     3000
20     5000
20     6000
20     NULL

SELECT dept_id,
       salary,
       SUM(salary) OVER(PARTITION BY dept_id 
             ORDER BY salary ASC 
             rows unbounded preceding) cum_sum
FROM   Employees;

dept_id   salary  cum_sum  
--------------------------
10        1000    1000     
10        1000    2000     
10        2000    4000     
10        3000    7000     
20        5000    5000     
20        6000    11000    
20        NULL    11000    

Но как ограничить совокупную сумму только N предшествующими строками? Например, ограничить совокупную сумму текущей строкой и двумя предыдущими строками.

dept_id   salary  cum_sum  
--------------------------
10        1000    1000     
10        1000    2000     
10        2000    4000     
10        3000    6000     
20        5000    5000     
20        6000    11000    
20        NULL    11000    

person ADJ    schedule 30.09.2015    source источник


Ответы (1)


Синтаксис SQL:

SELECT dept_id,
       salary,
       SUM(salary) OVER(PARTITION BY dept_id 
             ORDER BY salary ASC 
             rows between <N> preceding and current row) cum_sum
FROM   Employees;
person Gordon Linoff    schedule 30.09.2015
comment
@СкоттМкГ. . . Это хорошо знать. Я удалил комментарий из ответа. - person Gordon Linoff; 01.10.2015