Расчет процента SQL с группой в исходной таблице - PullRequest
2 голосов
/ 19 сентября 2011

У меня проблема с использованием 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 ]

1 голос
/ 19 сентября 2011
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 голос
/ 19 сентября 2011

Если ваша СУБД поддерживает оконные агрегаты

SELECT 
    School_Name,
    Class,
    100.0 * Studends / SUM(Studends) OVER (PARTITION BY Class ) AS Percent
FROM YourTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...