我有一张表##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 SUM
,300
列的值应为1
,因为我已使用Group by rownumber
和SUM
聚合函数百分比栏。
为什么?我如何解决这个问题?
答案 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