J'ai une table SQL qui compte 8 colonnes qui sont des résultats empiriques pour le même processus. Cependant, certaines des données sont incomplètes signifient que certaines des 8 colonnes ont une valeur nulle au lieu d'une valeur numérique. Je sais que si les 8 colonnes étaient présentes, je pouvais faire quelque chose comme ... mais si deux des valeurs sont nulelles ce que je veux dans ce cas est ... P > SELECT (val1+val2+val3+val4+val5+val6)/6 from mytable;
3 Réponses :
Vous serez probablement mieux en train de mettre les données dans des rangées séparées. Vous peut em> faire cela avec une certaine arithmétique: si votre base de données prend en charge les jointures latérales (telles que SQL Server, Oracle et Postgres), la syntaxe telle que ceci est Plus simple: p>
SELECT sum(COALESCE(val1,0)
+ COALESCE(val2,0)
+ COALESCE(val3,0)
+ COALESCE(val4,0)
+ COALESCE(val5,0)
+ COALESCE(val6,0)
+ COALESCE(val7,0)
+ COALESCE(val8,0)) / 8 AS total FROM yourTable
Une option de base de données croisée utilise coalesce () code> et case code> expressions. Cela suppose que toutes les valeurs ne seront pas code> null code> sur le même enregistrement. select id, avg(val) res
from (
select id, val1 val from mytable
union all select id, val2 val from mytable
union all select id, val3 val from mytable
union all select id, val4 val from mytable
union all select id, val5 val from mytable
union all select id, val6 val from mytable
union all select id, val7 val from mytable
union all select id, val8 val from mytable
) t
group by id
Tagez votre question avec la base de données que vous utilisez.
Est-ce que cela répond à votre question? Strange MySQL AVG () Anomaly Null Values
Pivot afin que vos données soient dans une seule colonne / plusieurs lignes et utilisez AVG. Comment faites-vous que c'est db à charge. Ce que vous avez est une mauvaise conception de table - cela vous fait avoir à faire ces choses ....
Est-ce que cela répond à votre question? SQL: Sum 3 colonnes Quand une colonne a une colonne valeur null?