SQLite中的累积SUM

时间:2015-03-18 09:39:27

标签: sqlite cumulative-sum

我在SQLite中编写了一个累积VALUE的查询,如果我只按ID排序(ID是自动增量int)则很好。但是,如果我想按DATE然后按ID排序,则查询会显示错误的结果。有什么想法吗?

查询:

select t1.ID, 
       t1.DATE, 
       t1.VALUE, 
       sum(t2.VALUE) as TOTAL     
from test t1
inner join test t2 on t1.DATE >= t2.DATE and t1.id >= t2.id 
group by t1.ID, t1.DATE
order by t1.DATE desc, t1.ID desc

结果:

ID  DATE        VALUE   TOTAL
9   2015-01-16  55      281 -- should be 226 + 55 = 281
6   2015-01-15  10      26  -- should be 216 + 10 = 226
5   2015-01-15  5       16  -- should be 211 +  5 = 216
8   2015-01-14  100     211
7   2015-01-14  100     111
4   2015-01-13  5       11
3   2015-01-12  3       6
2   2015-01-11  2       3
1   2015-01-10  1       1

1 个答案:

答案 0 :(得分:1)

至少在小数据上,将连接更改为以下内容:

t1.DATE||substr('00000'||t1.id,-5) >= t2.DATE||substr('00000'||t2.id,-5)

工作得很好......所以我们正在构建一个"排序键"根据日期和id(用零填充到5位数)并在连接中使用它。可能有必要建立一个索引,以处理性能,但