如何使用Count窗口函数获取百分比?

时间:2017-08-23 17:10:46

标签: postgresql amazon-redshift

说我有以下表格和值:

CREATE TABLE test (
  context text
);

INSERT INTO test VALUES ('idea'), ('vote'), ('vote'), ('query'), ('vote');

我希望能够在不使用select语句中的子查询的情况下找出表中行的百分比等于vote(如果我对此关闭,则会纠正我,将会重新计算结果集中的每一行。)

我正在尝试这样的事情:

SELECT context, count(*) / count(*) OVER ()::DOUBLE PRECISION AS pct
FROM test
GROUP BY context

但没有成功。我希望看到类似的东西:

每个不同的上下文类型

context_name pct_of_total

1 个答案:

答案 0 :(得分:3)

枚举数是按上下文划分的,而分母是不带分区的计数

select distinct
 context
,round( 100.0* count(1) over (partition by context) / count(1) over () ,2) as perc
from test