НАКОПЛЕННАЯ СУММА ЧЕРЕЗ КОНТРОЛЬ РАЗМЕРОВ ОКНА

НАКОПЛЕННАЯ СУММА ЧЕРЕЗ КОНТРОЛЬ РАЗМЕРОВ ОКНА

Если мы хотим как-то изменить количество строк, в рамках которых мы считаем накопительную сумму. Эти границы можно контролировать следующими способами:

Накопительная сумма считается по строкам до текущей строки:

sum(quantity) over (partition by productname order by date
rows between {СТРОК ДО ТЕКУЩЕЙ СТРОКИ}
and {СТРОК ДО ТЕКУЩЕЙ СТРОКИ / ТЕКУЩАЯ СТРОКА})

Накопительная сумма считается после текущей строки:

sum(quantity) over (partition by productname order by date
rows between {СТРОК ПОСЛЕ ТЕКУЩЕЙ СТРОКИ / ТЕКУЩАЯ СТРОКА}
and {СТРОК ДО ТЕКУЩЕЙ СТРОКИ})

Рассмотрим выражения для контроля строк:

  • n PRECEDING - N строк до текущей строки
  • CURRENT ROW - текущая строка
  • UNBOUNDED PRECEDING - все строки до текущей
  • UNBOUNDED FOLLOWING - все строки до текущей
  • n FOLLOWING - N строк после текущей строки

Как видите, первый пример, где мы использовали только сортировку можно написать еще и так:

sum(quantity) over (partition by productname order by date 
rows between UNBOUNDED PRECEDING and CURRENT ROW) as quantity_sale

Рассчитаем для каждого продукта накопительную сумму реализации товара за все предыдущие дни, не включая текущий:

sum(quantity) over (partition by productname order by date
rows between UNBOUNDED PRECEDING and 1 PRECEDING)

Рассчитаем для каждого продукта накопительную сумму реализации товаров за 5 предыдущих дней, не включая текущий:

sum(quantity) over (partition by productname order by date
rows between 5 PRECEDING and 1 PRECEDING)