1

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

所需输出

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 = 所有分数的总和(即 roger 的分数 + 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

谢谢

4

1 回答 1

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 部门的文档。

于 2013-11-03T06:47:02.767 回答