Meilleur auteur de réponses
erreur ssms avec la fonction de moyenne (AVG)

Question
-
Pourquoi lorsque j'utilise cette fonction:
AVG
(CAST([Table].Champ AS float)) AS moyenne_champ
j'obtient ce message d'erreur de la part SSMS
'champ' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
si j'enlève la fonction de moyenne, ma requête s'affiche correctement
merci
Réponses
-
tu agrège et groupe le même attribut "Table2.Champ2 " !?!.
Omar MERROUN Développeur .NET/Consultant Blog : http://merroun.wordpress.com/- Proposé comme réponse Patrice ScribeMVP mercredi 26 octobre 2011 08:15
- Marqué comme réponse Ciprian Duduiala lundi 31 octobre 2011 07:25
-
Même question que OmarioS .... Vous essayez de calculer une moyenne d'une colonne qui appartient déjà à un regroupement .. il y a quelque chose qui ne va pas. Expliquez de façon concrète ce que vous voulez faire.
++
MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1- Proposé comme réponse Patrice ScribeMVP mercredi 26 octobre 2011 08:15
- Marqué comme réponse Ciprian Duduiala lundi 31 octobre 2011 07:25
-
Pour calculer votre moyenne il faudra lui indiquer sur quel critère d'aggrégat le faire. Prenons un exemple simple. Vous voulez calculer une moyenne de note obtenu dans un cours. Ce dernier sera votre critère d'aggrégation. Vous aurez quelque chose du genre (AVG(note) ... GROUP BY cours). Maintenant vous voulez calculer une moyenne de notes pour chaque elève pour un cours donné. Votre critère d'aggrégation sera [COURS, ELEVE]. Vous aurez alors (AVG(note) ... GROUP BY Cours, Eleve).
++
MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1- Proposé comme réponse Ciprian Duduiala vendredi 28 octobre 2011 07:04
- Marqué comme réponse Ciprian Duduiala lundi 31 octobre 2011 07:25
Toutes les réponses
-
-
je te colle ici un exemple car ma table comporte beaucoup de champ dans la table1 et la table2, lorsque j'inscris ce code:
SELECT DISTINCT Table1.Champ1, Table2.Champ2, AVG(CAST(Table2.Champ2 AS float)) AS moyenne_Champ2 FROM Table1 INNER JOIN Table2 ON Table1.Champ1 = Table2.Champ2 GROUP BY Table1.Champ1, Table2.Champ2
ca fonctionne.
J'ai beaucoup de champ dans mes deux tables, dois-je voir à joindre tout les champs dont j'ai besoin dans le group by comme dans ce que je viens de coller?
si j'enlève Table2.Champ2 dans le group by, j'obtient l'erreur que j'ai mentionné plus haut
je ne comprend probablement pas quelle est le rapport entre la fonction AVG et group by
-
tu agrège et groupe le même attribut "Table2.Champ2 " !?!.
Omar MERROUN Développeur .NET/Consultant Blog : http://merroun.wordpress.com/- Proposé comme réponse Patrice ScribeMVP mercredi 26 octobre 2011 08:15
- Marqué comme réponse Ciprian Duduiala lundi 31 octobre 2011 07:25
-
Même question que OmarioS .... Vous essayez de calculer une moyenne d'une colonne qui appartient déjà à un regroupement .. il y a quelque chose qui ne va pas. Expliquez de façon concrète ce que vous voulez faire.
++
MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1- Proposé comme réponse Patrice ScribeMVP mercredi 26 octobre 2011 08:15
- Marqué comme réponse Ciprian Duduiala lundi 31 octobre 2011 07:25
-
tant qu'a moi je n'utiliserais pas la fonction de groupe, mais je pense que je suis obligé de l'utiliser, puisque j'utilise la fonction AVG, c'est ce que j'ai conclu, j'ai bien écris plus haut que je ne comprennais peut-être pas l'utilité de la fonction de GROUP BY, surtout en rapport avec la fonction AVG
ce que je veux est simplement d'afficher une table1 avec comme résultat dans chaque rangée (enregistrement) une colonne qui va afficher la moyenne d'une colonne d'une autre table2.
il est clair que dans mes deux tables, j'ai beaucoup de champ que je n'ai pas tout coller ici, j'espère que je n'ai pas besoin de tout regrouper chaque champ de ma première table comme j'ai du faire avec la requête que j'ai écris plus haut, ce serais vraiment long avec une longue requête, je comprend pas pourquoi je doit tout regrouper pour simplement avoir une moyenne d'une colonne d'une autre table
merci
-
Pour calculer votre moyenne il faudra lui indiquer sur quel critère d'aggrégat le faire. Prenons un exemple simple. Vous voulez calculer une moyenne de note obtenu dans un cours. Ce dernier sera votre critère d'aggrégation. Vous aurez quelque chose du genre (AVG(note) ... GROUP BY cours). Maintenant vous voulez calculer une moyenne de notes pour chaque elève pour un cours donné. Votre critère d'aggrégation sera [COURS, ELEVE]. Vous aurez alors (AVG(note) ... GROUP BY Cours, Eleve).
++
MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1- Proposé comme réponse Ciprian Duduiala vendredi 28 octobre 2011 07:04
- Marqué comme réponse Ciprian Duduiala lundi 31 octobre 2011 07:25