web-dev-qa-db-fra.com

SQL - Calculer le pourcentage sur le nombre (colonne)

J'ai le morceau de code suivant qui compte combien de fois quelque chose apparaît dans la colonne des événements.

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

Je veux pouvoir calculer le pourcentage de chacune des lignes comme ça.

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
9
Dean Flaherty
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
11
juergen d

La plupart des dialectes SQL prennent en charge les fonctions de fenêtre standard ANSI. Ainsi, vous pouvez écrire la requête comme suit:

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

Les fonctions de fenêtre sont généralement plus efficaces que les sous-requêtes et autres méthodes.

9
Gordon Linoff