2016-05-18 14 views
3

Ich habe das folgende Stück Code, der zählt, wie oft etwas in der Ereignisspalte erscheint.SQL - Berechnen Prozentsatz in der Anzahl (Spalte)

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 

Ich möchte in der Lage sein, den Prozentsatz jeder der Zeilen so zu berechnen.

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 
+0

Welche Datenbank verwenden Sie? – sgeddes

+1

Gesamtereignisse abrufen und in einer Variablen speichern. Verwenden Sie diese Variable in Ihrer ursprünglichen Select-Anweisung –

Antwort

6
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 
+0

Dies funktioniert gut, bis ich einen Datumsbereich in der Where-Klausel einfügen. Der ausgearbeitete Prozentsatz errechnet sich aus dem gesamten Datensatz und nicht nur aus dem Datumsbereich. Wie Sie sich vorstellen können, sind alle Prozentsätze sehr klein, da der Wert von event_count niedriger ist. –

+0

Fügen Sie einfach die selbe 'where'-Klausel zur inneren Auswahl hinzu. –

1

Die meisten SQL-Dialekte unterstützt ANSI-Standard Fensterfunktionen. So können Sie die Abfrage wie folgt schreiben:

Fensterfunktionen sind in der Regel effizienter als Unterabfragen und andere Methoden.