sql вычисляет процентное перераспределение

#sql

Вопрос:

Я хочу рассчитать процент для следующей таблицы:

 type , quantitie

A    ,  25
B    ,  5
C    ,  20
D    ,  10
E    ,  15
 

ожидаемый результат будет

 type , percentage

A    ,  33,3
B    ,  6,66
C    ,  26,66
D    ,  13,33
E    ,  20
 

Ответ №1:

Обычно для этого вы используете оконные функции. Я предпочитаю соотношение:

 select type, quantitie * 1.0 / sum(quantitie) over ()
from t;
 

Это связано с тем * 1.0 , что некоторые базы данных выполняют целочисленное деление. Если вам нужно значение от 0 до 100, используйте * 100.0 .