イベント列に何かが表示される回数をカウントする次のコードがあります。
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標準ウィンドウ関数をサポートしています。したがって、クエリは次のように記述できます。
select event, count(*) as event_count,
count(*) * 100.0/ sum(count(*)) over () as event_percent
from event_information
group by event;
通常、ウィンドウ関数は、サブクエリや他のメソッドよりも効率的です。