Je veux faire une requete qui liste la moyenne du consomme du combustible (AVG(ConsumCombustibil)) ou ConsumCombustibil est le champ du consomme du combustible. groupe par type auto (IdTip tableau TipuriAutomobile) et groupe aussi par TipCombustibil (tableau TipuriCombustibil) d'une cerataine periode (la periode est represente par deux champs DataOraPlecare et DataOraSosire du tableau FoaieParcursMasina tableau1 donc).
Voila l'output desire par moi:
Voila les tableaux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Output: AVG(ConsumCombustibil) As ConsumCombustibil premierre colonne Deuxieme colonne: DataOraPlecare champ Troisieme colonne: DataOraSosire champ Quatrieme colonne: IdTip -group by IdTip Cinquieme colonne: TipuriCombustibil GROUO BY TipCombustibil Sixieme colonne: Moyenne de la colonne TipuriCombustibil par une certaine periode (periode est donne par les champ DataOraPlecare et DataOraSosire ) - je dois faire un inner join je suppose
Tableau1: FoaieParcursMasina qui contient les champs DataOraPlecare et DataOraSosire
Tableau2: TipuriAutomobile contient champ IdTip
Tabela3: TipuriCombustibil contient champ IdCombustibil cle primaire IdMasina et TipCombustibil (on veut faire un group by TipCombustibil)
IdFoaie - cle primaire tableau FoaieParcursMasina
IdMasina -cle externe pour tableau 1, tableau 2 et tableau3
IdTip - cle primaire pour le tableau 2 nomme TipuriAutomobile
IdCombustibil -cle primaire pour le tableau nomme TipuriCombustibil
Mais je dois faire GROUP BY IdTip et TipCombustibil et en faisant la requete complete(aussi en ajoutant GROUP BY tab2.IdTip,tab3.TipCombustibil)
Voila ce que j'ai essaye:
Pourtant j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT tab1.DataOraPlecare,tab1.DataOraSosire,tab2.IdTip,tab3.TipCombustibil,x.CombustibilConsumat FROM FoaieParcursMasina tab1 left join (SELECT IdMasina,AVG(CombustibilConsumat) As CombustibilConsumat FROM FoaieParcursMasina GROUP BY IdMasina )x on x.IdMasina = tab1.IdMasina left join TipuriAutomobile tab2 on tab1.IdMasina = tab2.IdMasina left join TipuriCombustibil tab3 on tab3.IdCombustibil =tab2.IdMasina GROUP BY tab2.IdTip,tab3.TipCombustibil
Donc la consigne de la requete c'est lister la moyenne du consomme du combustible (donc faire AVG(ConsumCombustibil) ou ConsumCombustibil est le champ du tableau1 nomme tab1 dans une periode(decrite par DataOraPlecare et DataOraSosire tableau1 alias tab1) groupes par types auto (group by champ IdTip du tableau2) et groupes par type du combustible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Msg 8120, Level 16, State 1, Line 1 Column 'FoaieParcursMasina.DataOraPlecare' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
(group by TipCombustibil champ du tableau TipuriCombustibil tableau3 alias tab3 donne ). J'ai mis en bold la consigne et j'ai donne les details de mes champs qui font reference a ca. Aussi j'ai donne l'output desire par la requete (6colonnes) et aussi les champs qui entrent dans la structure de mes 3 tableaux.
Je ne sais pas comment faire la moyenne de la colonne CombustibilConsumat dans la seconde colonne nomme Maxim:
Et comment faire moyenne du combustible AVG(ConsumCombustibil) dans une periode donc en dependant des colonnes DataOraPlecare et DataOraSosire du tableau1 (inner join).
Partager