AVG Mysql à ignorer zéro
Question
Je dois effectuer une moyenne sur une colonne, mais je sais que la plupart des valeurs de cette colonne sera zéro. Sur toutes les lignes possibles, seulement deux auront probablement des valeurs positives. Comment puis-je dire mySQL d'ignorer les zéros et en moyenne que les valeurs réelles?
La solution
En supposant que vous voudrez peut-être de ne pas exclure totalement ces lignes (peut-être qu'ils ont des valeurs dans d'autres colonnes que vous souhaitez agrégat)
SELECT AVG(NULLIF(field ,0))
from table
Autres conseils
Vous pourriez probablement contrôler que via la clause WHERE:
select avg( field ) from table where field > 0
select avg(your_column)
from your_table
where your_column != 0
Vous pouvez convertir des zéros à NULL
, alors la fonction AVG()
ne fonctionne qu'avec des valeurs non NULL
.
UPDATE table SET column = NULL WHERE column='0';
SELECT AVG(column) FROM table;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow