获取某些类别的记录百分比

时间:2018-05-29 02:05:33

标签: sql postgresql

我有一个列category的表格。这些列是STRING类型。

如何获得该类别的总记录百分比?

到目前为止我所拥有的是

select category, count(1) from table group by category;

预期产出:

category | count | percent
cat_a       10       10
cat_b       80       80
cat_c       10       10

2 个答案:

答案 0 :(得分:3)

使用window functions

SELECT
category, COUNT(*) / SUM(COUNT(*)) OVER ()::REAL
FROM table t
GROUP BY 1

在postgresql中,您可以一起使用窗口函数和聚合函数。 加入后评估窗口,其中,分组和&有条款,可以有多个窗口。

答案 1 :(得分:2)

你快到了。只需使用窗口函数将查询放入外部查询:

SELECT category, cnt,
       cnt / sum(cnt) OVER () AS percent
FROM (SELECT category, count(1) AS cnt
      FROM "table"
      GROUP BY category) q;