根据总和不工作获得分数贡献

时间:2013-11-03 06:42:14

标签: sql sql-server

我有一个场景,我试图计算每个学生贡献的分数与所有学生的总分数相比

必需输出

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

由于

1 个答案:

答案 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上的文档。