2011-09-18 104 views
2

我使用SQL有一個問題:SQL百分比計算原始表

我有一個表:

School Name | Class | Studends 
=================================== 
Golden  | 1  | 20 
Red   | 1  | 80 
Golden  | 2  | 7 
Red   | 2  | 14 
Golden  | 3  | 3 
Red   | 3  | 1 

我想有以下結果:

School Name | Class | Percent  
====================================== 
Golden  | 1  | 20 % 
Red   | 1  | 80 % 
Golden  | 2  | 33 % 
Red   | 2  | 66 % 
Golden  | 3  | 75 % 
Red   | 3  | 25 % 

我試圖找到解決方案,但沒有找到,任何人都有答案?

+0

什麼RDBMS好嗎? –

回答

1

如果您的RDBMS支持窗口聚集

SELECT 
    School_Name, 
    Class, 
    100.0 * Studends/SUM(Studends) OVER (PARTITION BY Class) AS Percent 
FROM YourTable 
1
SELECT 
    a."School Name", 
    a.Class, 
    a.Studends/SUM(b.Students) 
FROM YourTable a 
LEFT JOIN YourTable b ON a.Class = b.Class 
GROUP BY 
    a."School Name", 
    a.Class, 
    a.Studends, 
    b.Class 
+1

+1雖然你可能需要一個強制轉換來避免整數除法。 –