我需要编写一个查询(一个事务),该查询将分组元素并将元素的数据按最小和值(例如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