根据排序的表结果查询分组

时间:2017-02-24 19:08:28

标签: sql grouping sequence

以下是我的表

a  1
a  2
a  1
b  1
a  2
a  2
b  3
b  2
a  1

我的预期输出是

a  4
b  1
a  4
b  5
a  1

我希望它们按顺序分组。

1 个答案:

答案 0 :(得分:0)

如果dbms支持窗口函数,则可以使用row_number差异将同一组分配给一列中的连续值(相同)。分配组后,很容易对每个组的值进行求和。

select col1,sum(col2)
from (select t.*, 
      row_number() over(order by someid) 
      - row_number() over(partition by col1 order by someid) as grp
      from tablename t
     ) x
group by col1,grp

将tablename,col1,col2,someid替换为相应的列名。 someid应该是要排序的列。