我有一个列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
答案 0 :(得分:3)
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;