我有一个基于Sum Function的SQL编程问题。假设,我有下表。
ID Values
1 20
1 30
1 100
2 10
2 1
2 12
3 45
3 66
如何计算与ID相关的值的总和并将其添加到新列。我也想按ID分组。例如:
ID Values Total_Value
1 20 150
1 30 150
1 100 150
2 10 23
2 1 23
2 12 23
3 45 111
3 66 111
任何建议将不胜感激。谢谢!
答案 0 :(得分:5)
这可以使用窗口函数轻松完成:
select id,
value,
sum(value) over (partition by id) as total_value_for_id
from the_table
order by id;
答案 1 :(得分:2)
使用分析功能。这就是他们的目的:
select id, value, sum(value) over (partition by id) as totalvalue
from table t
order by id;
答案 2 :(得分:0)
就我的问题而言,sum等于具有相同id的行的值的总和。对于Id 1 sum的所有行是150,而对于2,它是23。
因此,您将需要通过Id对值进行求和的子查询,之后您可以通过Id加入这两个表。
Select table.*, sumtable.Sum
From table
Join (Select Sum(Values) As Sum, ID From table Group By ID) sumtable
On table.ID = sumtable.ID
答案 3 :(得分:-1)
您可以通过内部选择(您将计算总和)或通过创建函数并在select语句中使用它来实现此目的。函数必须接受ID作为参数并返回SUM。