Bonjour,
J'ai effectué une requête avec multiple UNION. Bien qu'elle me retourne les résultats escomptés, je ne suis pas satisfait par sa complexité et je voudrais savoir s'il existe un autre moyen, sous Oracle 11G, d'éviter l'utilisation multiple d'Union pour obtenir mes différents calculs sur une seule ligne (celle d'un groupe).
Voici ce que je veux obtenir.
Pour chaque groupe d'un cours, je veux avoir la moyenne des étudiants présents, la moyenne de tous les étudiants.
Enfin, je veux la moyenne de tous les étudiants présents de tous les groupes et la moyenne de tous les étudiants de tous les groupes.
Il est vrai que je pourrais faire plusieurs requêtes, mais je souhaiterais réaliser ces calculs en une seule fois et éviter plusieurs appels BD dans mon programme.
Et c'est surtout l'idée de savoir s'il existe un moyen de faire sans UNION qui m'intéresse.
J'ai donc une requête qui ressemble à ça (J'ai simplifié le tout au max pour ne garder que le concept de ma requête) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Select groupe, sum(noteEtu) / nbEtuObtenuAilleurs as moyenne_present, 0 as moyenne_tous, 0 as moyenne_total_present, 0 as moyenne_total_tous from TableCours where etudiantPresent = '0' and cours = 'XXX' group by groupe UNION Select groupe, 0 moyenne_present, sum(noteEtu) / nbEtuObtenuAilleurs as moyenne_tous, 0 as moyenne_total_present, 0 as moyenne_total_tous from TableCours where cours = 'XXX' group by groupe UNION Select null, 0 as moyenne_present, 0 as moyenne_tous, sum(noteEtu) / nbEtuObtenuAilleurs as moyenne_total_present, 0 as moyenne_total_tous from TableCours where cours = 'XXX' UNION Select null, 0 as moyenne_present, 0 as moyenne_tous, 0 as moyenne_total_present, sum(noteEtu) / nbEtuObtenuAilleurs as moyenne_total_tous from TableCours where cours = 'XXX'
Partager