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?

Était-ce utile?

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
scroll top