SQL/Django查看值的条件累积和



对于SQL和Django来说,这是一个全新的概念,如果B列(字符串(的值不同,我将尝试创建一个查询来累积a列(整数(的值。应根据日期(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

如果想要查询,可以使用自联接和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;

请参阅演示

最新更新