SQL - 计算计数(列)的百分比

SQL - Calculate percentage on count(column)

我有以下一段代码,它计算事件列中某项出现的次数。

SELECT event, count(event) as event_count   
FROM event_information
group by event

event   event_count
a       34
b       256
c       45
d       117
e       3

我希望能够像这样计算每一行的百分比。

event   event_count event_percent
a       34          7.47
b       256         56.26
c       45          9.89
d       117         25.71
e       3           0.66
SELECT event, 
       count(event) as event_count,
       count(event) * 100.0 / (select count(*) from event_information) as event_percent
FROM event_information
group by event

大多数 SQL 方言支持 ANSI 标准 window 函数。因此,您可以将查询编写为:

select event, count(*) as event_count,
       count(*) * 100.0/ sum(count(*)) over () as event_percent
from event_information
group by event;

Window 函数通常比子查询和其他方法更有效。