postgresql频率表,按百分比划分和分组

atmip9wb  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(443)

我试图在postgresql中创建一个带有百分比的频率表
如果有人熟悉sas,我正在尝试重新创建一个proc频率表
下面我试着通过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

我用上面的代码得到了一个错误的答案

pieyvz9o

pieyvz9o1#

你想和 count(*) 价值观。所以:

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

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

相关问题