Postgresql таблица частот с процентным разделением и группировкой по - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать таблицу частот с процентами в Postgresql

Если кто-то знаком с SAS, я пытаюсь воссоздать pro c таблицу частот

Ниже Я пытаюсь получить частоту с группой на var1, var2

var1     var2    frequency  percentage 
A        20       1          33%
A        30       1          33%
A        40       1          33%
B        20       4          80%
B        30       1          20%

Теперь это легко с помощью всего

select var1
,var2
,count(*)
from table
group by 1,2

Что становится сложным, так это то, где я пытаюсь добавить столбец с процентами, который соответствует% на основе распределения var1

select var1
,var2
,count(*)
,count(*)/count(*) over(partition by var1)
from table
group by 1,2

Я получаю неправильный ответ с кодом выше

1 Ответ

1 голос
/ 13 июля 2020

Вы хотите суммировать значения count(*). Итак:

select var1, var2, count(*),
       count(*) * 1.0 / sum(count(*)) over (partition by var1)
from table
group by 1, 2;

Ваш код просто подсчитывает количество строк для каждой var после агрегации. Следовательно, он фактически возвращает средневзвешенное значение - что-то, что может быть полезно, но не то, что вам нужно.

...