2013-11-03 46 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的。 –