Postgresql频率表,百分比划分和分组

时间:2020-07-13 13:54:22

标签: sql postgresql group-by frequency

我正在尝试使用Postgresql中的百分比创建频率表

如果有人熟悉SAS,我将尝试重新创建proc频率表

下面我试图通过var1,var2上的一组来获取频率

foo:
    bar: 
        - " One."
        - " Two."
        - " Three"

现在,这很容易

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

棘手的是我尝试添加一个基于var1分布执行百分比的百分比列

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

我对上面的代码给出了错误的答案

1 个答案:

答案 0 :(得分:1)

您要求和 count(*)值。所以:

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

您的代码只计算聚合后每个var 的行数。因此,它实际上是在返回加权平均值-可能有用但不是您想要的。

相关问题