9
votes

Erreur: Fonction AVG (Boolean) n'existe pas

J'essaie de savoir à quel point un événement se produit fréquemment et que la présence de cet événement dans ma base de données est enregistrée en définissant un booléen à «vrai» et la non-octroi est la définition à «Faux».

Mais lorsque j'essaie de sélectionner la valeur en utilisant la fonction avg (), cela me renvoie cette erreur: ERREUR: Fonction AVG (Boolean) n'existe pas

Comment puis-je mesurer la fréquence de l'événement et à un certain temps, gardez une bonne performance?

merci.

JOAO


0 commentaires

3 Réponses :


10
votes

Vous pouvez le faire:

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


1 commentaires

Avg (cas où maboolatianattribute puis 1 autre 0 extrémité) fonctionnerait aussi



9
votes

Cela renforcera la valeur dans 0 et 1 xxx


3 commentaires

Je crois que la réponse de Chris.Caldwell est plus utile.


@botchniaque juste curieux, quelle base de données utilisez-vous, où avg sur une colonne INT renvoie un int? J'ai essayé cette solution à la fois sur Redshift and Snow Flake, et dans les deux cas, le casting de Int était suffisant, AVG retourna toujours un flotteur.


@ Sid-kap que vous avez droit - Casting à INT suffit.



6
votes

Si vous lancez comme int, vous obtiendrez une moyenne intoise, ce qui n'est pas très utile. Au lieu d'essayer:

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


0 commentaires