Kin*_*rog 3 postgresql count sum
我有下表:
NAME
Alex
Bob
Bob
Tim
Alex
Roger
Run Code Online (Sandbox Code Playgroud)
我需要生产以下内容:
Name Count Percentage
Alex 2 33%
Bob 2 33%
Roger 1 16.6%
Tim 1 16.6%
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始。我可以对计数进行初始查询,这很简单。
Erw*_*ter 10
可能有一个SELECT:
SELECT name, count(*), to_char((count(*) * 100.0
/ sum(count(*)) OVER ()), 'FM990.00" %"') AS percent
FROM t
GROUP BY 1
ORDER BY 1;
Run Code Online (Sandbox Code Playgroud)
count(*) 是函数的一种独立形式, 比count(<expression>). 假设所有列都是NOT NULL,否则您可能必须使用后者。
您可以运行窗口聚合函数sum(count(*)) OVER ()以获取相同SELECT. 考虑 a 中的事件序列SELECT:
这使用一次顺序扫描而不是两次,并且通常比使用子查询进行总计数快两倍。
to_char() 美化输出:
name count percent
-----------------------
Alex 2 33.33 %
Bob 2 33.33 %
Roger 1 16.67 %
Tim 1 16.67 %
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33960 次 |
| 最近记录: |