Je veux calculer la moyenne de deux colonnes, mais chaque colonne a des valeurs de chaîne entre et crée une erreur lorsque la fonction AVG est appliquée.Comment puis-je résoudre ce problème? P>
3 Réponses :
Ceci peut fonctionner
Select (cast(col1 as float) + cast(col2 as float)) / 2 as average_between_col1_and_col2,
avg(cast(col2 as float)) as avg_col_2,
avg(cast(col1 as float)) as avg_col_1
from table tbl
Les échantillons de données aideraient; Je ne sais pas ce que vous vouliez dire en disant que vous souhaitez "calculer la moyenne de deux colonnes" - est-ce Quoi qu'il en soit, le principe est identique - Vérifiez si la colonne contient un numéro et effectuez le calcul. Sinon, ne rien faire. Par exemple: p> (colonne_1 + colonne_2) / 2 code> ou avg (colonne_1) code> et avg (colonne_2) code>?
Si vous voulez la moyenne globale dans chaque colonne, alors: Si vous souhaitez la moyenne d'une ligne, alors avg () code> ignore null code> valeurs. P > avg () code> n'est pas approprié (il s'agit d'une fonction d'agrégation). Dans ce cas: p>
S'il vous plaît partager votre code
Vous pouvez ajouter un où indiquant la valeur de la colonne doit être numérique
S'il vous plaît Modifier Votre question à inclure un exemple de reproductible minimal contenant: quelques données d'échantillon; votre sortie attendue pour ces données d'échantillon; une description anglaise de la façon dont vous avez eu cette sortie attendue (s'il n'est pas évident); votre tentative de la solution; et les messages d'erreur qu'il a générés.