如何对相邻行进行分组并对 SQL 中的数据求和

How to group adjacent row and sum the data in SQL

我想对值求和并将 SQL 中的相邻行分组,如下所示。我可以知道该怎么做吗?

我现在的代码:

Select ID, Value from Table_1 

进一步的问题

这个怎么样?

这是典型的缺口孤岛问题。

作为初学者:请记住 SQL tables 表示无序的行集。因此,要解决您的问题,您需要一个列来定义 table 中的行顺序 - 我假设 ordering_id.

这是一种使用 row_numbers() 之间的差异来构建具有相同 id 的相邻行组的方法:

select 
    id,
    sum(value) value
from (
    select 
        t.*,
        row_number() over(order by ordering_id) rn1
        row_number() over(partition by id order by ordering_id) rn2
    from mytable t
) t
group by id, rn1 - rn2

如果您想要每个用户

select 
    user,
    id,
    sum(value) value
from (
    select 
        t.*,
        row_number() over(partition by user order by ordering_id) rn1
        row_number() over(partition by user, id order by ordering_id) rn2
    from mytable t
) t
group by user, id, rn1 - rn2