Как рассчитать проценты для групп в SQL - PullRequest
0 голосов
/ 16 июня 2020

У меня есть таблица, которая выглядит примерно так

Class     ID        Value
  A        1         300
  A        2         200
  A        3         500
  B        1         300
  B        2         300
  C        1        1000

Есть ли способ использовать SQL для расчета процентной доли каждого идентификатора в классе.

Например , процентное соотношение для класса A будет 30% для идентификатора 1, 20% для идентификатора 2 и 50% для идентификатора 3 и так далее для других классов:

Class     ID        Value    Percentage
  A        1         300         30%
  A        2         200         20%
  A        3         500         50%
  B        1         300         50%
  B        2         300         50%
  C        1        1000         100%

1 Ответ

0 голосов
/ 16 июня 2020

Вы можете использовать оконные функции (если ваша база данных, которую вы не раскрыли, поддерживает их):

select
    t.*,
    1.0 * value / sum(value) over(partition by class) ratio
from mytable t

Это дает вам соотношение, то есть значение от 0 до 1 - Я считаю, что это более актуально, чем процент, но вы можете умножить это на 100, если хотите.

...