按聚合条件对数据进行分组

  • 本文关键字:数据 条件 sql sql-server
  • 更新时间 :
  • 英文 :


我需要编写一个查询(一个事务),该查询将分组元素并将元素的数据按最小和值(例如10)的值的总和转换为组。如果一个值等于或大于10,它应该是一个单独的组。

ElementId | GroupId | Value
1 | NULL | 12
2 | NULL | 10
3 | NULL | 9
4 | NULL | 13
5 | NULL | 25
GroupId | Sum
empty

id为3的元素可以与任何其他元素分组,但理想情况下与另一个值小于10的元素分组。此外,我需要更新元素和组之间的关系查询执行后:

ElementId | GroupId | Value
1 | 1 | 12
2 | 2 | 10
3 | 3 | 9
4 | 3 | 13
5 | 4 | 25
GroupId | Sum
1 | 12
2 | 10
3 | 22 (13 + 9)
4 | 25

任何想法?

您可以使用分析函数(对于给定的样本数据)如下:

Select groupid_new as groupid,
Sum(value) as value
From
(Select t.*,
Sum(case when value >= 10 then value end) over (order by elementid) as groupid_new
From your_table t) t
Group by groupid_new

相关内容

  • 没有找到相关文章

最新更新