SUM未在SQL中显示预期值

时间:2016-06-16 17:51:01

标签: sql oracle group-by

我有一张桌子

ID  TOTAL SUM(TOTAL)
1   62    62
1   53    53
2   62    62
2   47    47

我认为SUM(TOTAL)应该看起来像

ID  TOTAL SUM(TOTAL)
1   62    115
1   53    115
2   62    109
2   47    109

这是我使用的查询

select ID, TOTAL, SUM(TOTAL)
from tablename
GROUP BY TOTAL, ID

2 个答案:

答案 0 :(得分:3)

您可以改为窗口SUM

Select   ID, TOTAL, SUM(TOTAL) OVER(PARTITION BY ID) 
From     tablename

这将为您提供预期的结果。它会显示每行的IDTOTAL以及SUM分组的ID

此类求和不需要GROUP BY

答案 1 :(得分:1)

您需要从组中删除TOTAL列,因此需要删除选择列表。由于TOTAL位于您的选择列表和组中,因此无法正确汇总您的预期。

SELECT ID, SUM(TOTAL)
FROM tablename
GROUP BY ID

要获得准确的输出:

SELECT tablename.ID,
       TOTAL,
       TOTALSUM
FROM   (SELECT   ID,
                 SUM(TOTAL) AS TOTALSUM
        FROM     tablename
        GROUP BY ID) AS t
       INNER JOIN
       tablename
       ON tablename.ID = t.ID;