如何在sqlite中按连续行分组?

时间:2018-02-23 20:10:11

标签: sql sqlite group-by

我有一张表:

id version count
1  0       3
2  0       4
3  0       3
4  1       3
5  1       2
6  1       1
7  0       3
8  0       5

我想得到一个结果:

min_id version sum
1      0       10
4      1       6
7      0       8

如果我使用SELECT MIN(id), version, sum(count) group by version,我就明白了:

min_id version sum
1      0       18
4      1       6

因为GROUP BY组合了同一版本中的所有内容。我想只根据id。

组合那些连续的版本

1 个答案:

答案 0 :(得分:4)

这在SQLite中很难做到,但可能。现在,性能很糟糕,但我们的想法是在任何给定行之前用不同的 id计算行数。这标识每个组!瞧!

select version, min(id), max(id), sum(count)
from (select t.*,
             (select count(*) from t t2 where t2.version <> t.version and t2.id < t.id) as grp
      from t
     ) t
group by version, grp;