2010-11-20 10 views
2

Ich versuche zu wissen, wie häufig ein Ereignis auftritt, und das Auftreten dieses Ereignisses in meiner Datenbank wird aufgezeichnet, indem ein Boolean auf 'TRUE' gesetzt wird und das Nichtvorkommen eingestellt wird es zu "FALSCH".FEHLER: Funktion avg (boolean) existiert nicht

Aber wenn ich versuche, bin den Wert auszuwählen, indem die Funktion avg() verwendet es mir diese Fehlermeldung zurückgibt: ERROR: Funktion avg (boolean) existiert nicht

Wie kann ich die Ereignisfrequenz messen und Irgendwann eine gute Leistung halten?

Vielen Dank.

Joao

Antwort

4

Dies wird den Wert in 0 und 1 ist

select avg(val::int); 
7

Sie können dies tun:

AVG(CASE WHEN myBooleanAttribute = TRUE THEN 1 ELSE 0 END) 
+2

AVG (CASE WHEN myBooleanAttribute THEN 1 ELSE 0 END) würde auch funktionieren – Tometzky

1

coerce Wenn Sie als int Sie werfen wird einen int Durchschnitt erhalten, die ist nicht sehr nützlich. Stattdessen versuchen:

select avg(val::int::float4); 
Verwandte Themen