Накопительный итог посчитанный оконной функцией не верен. Как исправить

Есть скрипт, в котором мне необходимо подсчитать корректно накопительный итог по полю month_spis. Но в результате отработки скрипта, накопительный итог к концу года значительно ниже корректного, при этом оконная функция, высчитывающая агрегацию по месяцам выдает верный результат. Что еще нужно учесть? Помогите пожалуйста скорректировать скрипт.

WITH monthly AS (
  SELECT 
    a.month::int AS month,
    NULLIF(c.org_id, '0') AS org_id,
    NULLIF(a.function_direction, '') AS function_direction,
    NULLIF(a.subcategory_product, '') AS subcategory_product,
    NULLIF(a.klass_fot, '') AS klass_fot,
    NULLIF(COALESCE(t2.type_unit, t.type_unit), '-') AS type_unit,
    SUM(a.avg_spis_people_all::numeric) AS month_spis
  FROM hr."1C".avg_people_fzp AS a
  JOIN hr."Book_UFPS" AS c
    ON btrim(a.organization) = c.organization
  LEFT JOIN (
    SELECT DISTINCT
      COALESCE(index_department::text, '0') AS index_unit,
      first_value(substr(tip_ops, 1, position(' ' in tip_ops)-1))
        OVER (PARTITION BY index_department::text ORDER BY tip_ops) AS type_unit
    FROM poligon."Book_Class_OPS"
  ) AS t2
    ON COALESCE(a.index_unit::text, '0') = t2.index_unit
  LEFT JOIN public.or_type_unit AS t
    ON COALESCE(a.index_unit::text, '0') = t.index_unit
  WHERE a.year = 2024
    AND a.date_replica BETWEEN '2024-01-01' AND '2024-12-01'
  GROUP BY 1,2,3,4,5,6
)
SELECT
  month,
  org_id,
  function_direction,
  subcategory_product,
  klass_fot,
  type_unit,
    SUM(month_spis) OVER (
    PARTITION BY org_id, function_direction, subcategory_product, klass_fot, type_unit, month
    ORDER BY month
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  ) AS avg_spis_month,
  SUM(month_spis) OVER (
    PARTITION BY org_id, function_direction, subcategory_product, klass_fot, type_unit
    ORDER BY month
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  ) AS cumulative_avg_spis
FROM monthly
ORDER BY month;

Вот сводная таблица, полученная в результате отработки скрипта

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Solt

Если окно на все записи месяца, кажется можно было писать в первом только PARTITION BY month и без ORDER, а во втором только ORDER BY month

→ Ссылка