Представления SQL / Django условная кумулятивная сумма значений
Я совсем новичок в SQL и Django, я пытаюсь создать запрос для суммирования значения столбца A (целое число), если значение в столбце B (строка) отличается. Это суммирование должно производиться на основе даты (столбец C).
Вот данные:
Column A Column B Column C
2.0 Rock 2020-08-08
3.0 Paper 2020-09-08
25.0 Rock 2021-09-09
12.0 Rock 2021-10-10
5.0 Paper 2021-11-11
На основе этих данных я хотел бы иметь третий столбец D, который будет представлять кумулятивное значение, как показано ниже:
Column A Column B Column C Column D
2.0 Rock 2020-08-08 2.0
3.0 Paper 2020-09-08 5.0
25.0 Rock 2021-09-09 28.0
12.0 Rock 2021-10-10 15.0
5.0 Paper 2021-11-11 17.0
Если вам нужен запрос, вы можете сделать его с помощью self join и FIRST_VALUE()
оконной функции:
SELECT DISTINCT t1.*,
t1.ColumnA + COALESCE(FIRST_VALUE(t2.ColumnA) OVER (PARTITION BY t1.ColumnC ORDER BY t2.ColumnC DESC), 0) ColumnD
FROM tablename t1 LEFT JOIN tablename t2
ON t2.ColumnC < t1.ColumnC AND t2.ColumnB <> t1.ColumnB
ORDER BY t1.ColumnC;
Смотрите demo.