在原始表中使用group计算SQL百分比

时间:2011-09-18 21:50:28

标签: sql group-by

我在使用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 %

我试图找到解决方案,但没有找到,有人有答案吗?

2 个答案:

答案 0 :(得分:1)

如果您的RDBMS支持窗口聚合

SELECT 
    School_Name,
    Class,
    100.0 * Studends / SUM(Studends) OVER (PARTITION BY Class ) AS Percent
FROM YourTable

答案 1 :(得分: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