2010-11-20 6 views
2

J'essaie de savoir à quelle fréquence un événement se produit, et l'occurrence de cet événement dans ma base de données est enregistrée en définissant un booléen sur "TRUE" et la non-occurrence est définie à 'FAUX'.ERREUR: la fonction avg (booléenne) n'existe pas

Mais quand je suis essayer de sélectionner la valeur en utilisant la moyenne de la fonction() il me retourne cette erreur: erreur: avg fonction (booléenne) n'existe pas

Comment puis-je mesurer la fréquence d'événements et à un moment donné, gardez une bonne performance?

Merci.

Joao

Répondre

4

Cette forcera la valeur dans 0 et de 1

select avg(val::int); 
7

Vous pouvez le faire:

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

AVG (CAS QUAND myBooleanAttribute ALORS 1 ELSE 0 END) fonctionnerait également – Tometzky

1

Si vous CAST int vous obtiendrez une moyenne int, qui n'est pas très utile. Au lieu de cela, essayez:

select avg(val::int::float4); 
Questions connexes