如何使用Oracle SQL中的SUM函数生成以下输出?

时间:2014-12-02 22:14:28

标签: sql oracle

我有一个基于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

任何建议将不胜感激。谢谢!

4 个答案:

答案 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。