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». P>
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 p>
merci. p>
JOAO P>
3 Réponses :
Vous pouvez le faire:
AVG(CASE WHEN myBooleanAttribute = TRUE THEN 1 ELSE 0 END)
Avg (cas où maboolatianattribute puis 1 autre 0 extrémité) fonctionnerait aussi
Cela renforcera la valeur dans 0 et 1
Je crois que la réponse de Chris.Caldwell est plus utile.
@botchniaque juste curieux, quelle base de données utilisez-vous, où avg code> 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 code> suffit.
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);