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:

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
Voila les tableaux:

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:

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
Pourtant j'ai l'erreur suivante:



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.
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
(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).