我有一张表:
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。
答案 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;