sql中的SUM函数给出了错误的输出

时间:2015-03-30 15:07:10

标签: sql sql-server

我有一张表##Temp2,其中包含以下数据:

Rownumber   Percentage
    1   100.0000
    2   50.0000
    3   16.6667
    4   14.2857
    5   14.2857
    6   14.2857
    1   100.0000
    4   20.0000
    5   20.0000
    6   20.0000
    1   100.0000
    2   100.0000
    4   14.2857
    5   14.2857
    6   14.2857

我在上表中运行了这个SQL查询:

 select SUM(Percentage) as SUM , @cnt as Count , (SUM(Percentage)/@cnt)
 as Percentage from ##Temp2 group By RowNumber order by Percentage desc

结果如下:

SUM      Count        Percentage
200.0000    3          66.66666
50.0000     3         16.66667
34.2857     3         11.42857
34.2857     3        11.42857
34.2857     3        11.42857
16.6667     3         5.555567

SUM列计算错误,我可以清楚地看到。 例如:对于rownumber SUM300列的值应为1,因为我已使用Group by rownumberSUM聚合函数百分比栏。

为什么?我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

试试这个:

create table ##Temp2 (
            Rownumber int,
            Percentage float
        )
insert ##Temp2 select 1,   100.0000
insert ##Temp2 select    2,   50.0000
insert ##Temp2 select    3,   16.6667
insert ##Temp2 select    4,   14.2857
insert ##Temp2 select    5,   14.2857
insert ##Temp2 select    6,   14.2857
insert ##Temp2 select    1,   100.0000
insert ##Temp2 select    4,   20.0000
insert ##Temp2 select    5,   20.0000
insert ##Temp2 select    6,   20.0000
insert ##Temp2 select    1,   100.0000
insert ##Temp2 select    2,   100.0000
insert ##Temp2 select    4,   14.2857
insert ##Temp2 select    5,   14.2857
insert ##Temp2 select    6,   14.2857


select * from ##Temp2

declare @cnt int = 3

select  SUM(Percentage) as SUM, 
        @cnt as Count , 
        (SUM(Percentage) / @cnt) as Percentage 
    from ##Temp2 
    group By Rownumber 
    order by Percentage desc

drop table ##Temp2

返回:

SUM   Count Percentage
300     3   100
150     3   50
48.5714 3   16.1904666666667
48.5714 3   16.1904666666667
48.5714 3   16.1904666666667
16.6667 3   5.55556666666667