簡體   English   中英

Postgresql 頻率表,具有百分比分區和分組依據

[英]Postgresql frequency table with percentage partition over and group by

我正在嘗試在 Postgresql 中創建一個帶有百分比的頻率表

如果有人熟悉 SAS 我正在嘗試重新創建一個 proc 頻率表

下面我試圖在 var1,var2 上通過 group by 獲取頻率

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

我對上面的代碼得到了錯誤的答案

您想對count(*)求和 所以:

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

您的代碼只計算聚合每個var的行數。 因此,它實際上是返回加權平均值——這可能有用但不是你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM