2011-09-18 107 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虽然你可能需要一个强制转换来避免整数除法。 –