首页 > 解决方案 > SQL:我如何通过只有直接位于其正下方的 null 的 id 进行分组?

问题描述

我如何按 id 分组,只有 null 直接位于它的正下方。然后得到时间的总和?

ID    time
1     time1
null  time1
null  time1
null  time1
2     time1
null  time1
null  time1
3     time1
null  time1
null  time1

想要的结果

ID    time
1     sumTime
2     sumTime
3     sumTime

标签: sqlsql-server

解决方案


SQL 表表示无序集。为了让你做你想做的事,你需要一个指定排序的列。一旦你有了它,你可以通过计算非空值的累积数量id并聚合来识别组:

select id, sum(time)
from (select t.*,
             count(id) over (order by <ordering col>) as grp
      from t
     ) t
group by id;

如果您没有排序列,则您的问题没有意义,因为该表是无序的。


推荐阅读