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

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

我试图在postgresql中创建一个带有百分比的频率表
如果有人熟悉sas,我正在尝试重新创建一个proc频率表
下面我试着通过var1,var2得到一组的频率

  1. var1 var2 frequency percentage
  2. A 20 1 33%
  3. A 30 1 33%
  4. A 40 1 33%
  5. B 20 4 80%
  6. B 30 1 20%

现在这很简单,只要

  1. select var1
  2. ,var2
  3. ,count(*)
  4. from table
  5. group by 1,2

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

  1. select var1
  2. ,var2
  3. ,count(*)
  4. ,count(*)/count(*) over(partition by var1)
  5. from table
  6. group by 1,2

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

pieyvz9o

pieyvz9o1#

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

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

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

相关问题