2013-11-03 45 views
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 

其中总和=所有取得的标志(即罗杰的标记+山姆+ ...等)的总和

I R在下面的查询

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

你正在做的整数除法,而不是浮点所以结果就是你所期望的。

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

+0

谢谢你的工作。只是好奇的是,特定于SQL Server的类型转换还是适用于所有SQL支持的数据库? – user672390

+0

我不认为这是标准的,但其他DBMS支持它,例如MySQL的。 –