我有一个场景,我试图计算每个学生贡献的分数与所有学生的总分数相比
必需输出:
NAMES MARKS SUM Reqd Column (MARKS/SUM)
------ ----- ---- -----------------------
Roger 96 366 0.262
Sam 85 366 0.232
Ali 74 366 0.202
Nina 58 366 0.158
Mark 41 366 0.112
Steve 12 366 0.032
其中 Sum =所有人获得的分数总和(即罗杰的分数+ Sam + +等)
我运行了以下查询:
select T.name,T.marks,T1.sum,T.marks/t1.sum
from dbo.Total_Marks as T
cross join (select SUM(Marks) sum from dbo.Total_Marks) t1
order by marks desc
但结果是不同的
我的结果:
NAMES MARKS SUM Reqd Column (MARKS/SUM)
------ ----- ---- -----------------------
Roger 96 366 0
Sam 85 366 0
Ali 74 366 0
Nina 58 366 0
Mark 41 366 0
Steve 12 366 0
由于
答案 0 :(得分:0)
您正在进行整数除法,而不是浮点除法,因此结果是您所期望的最低点。
select T.name,T.marks,T1.sum,cast(T.marks as float)/t1.sum
from dbo.Total_Marks as T
cross join (select SUM(Marks) sum from dbo.Total_Marks) t1
order by marks desc
有关详细信息,请阅读T-SQL division上的文档。