Sous-requêtes dans la clause FROM
Il est possible de raffiner progressivement une requête en enchaînant les questions dans la clause FROM. Ceci est une alternative à la création de vue.
Syntaxe :
1
SELECT ... FROM
2
(SELECT ...
3
FROM ...
4
WHERE ...)
5
WHERE ...
Remarque : Sous-sous requête
Il est possible d'imbriquer successivement plusieurs sous-requêtes.
1
SELECT ... FROM
2
(SELECT ... FROM
3
(SELECT...
4
FROM ...
5
WHERE)
6
WHERE ...)
7
WHERE ...
Syntaxe : Jointure de sous-requêtes
Il est possible de faire le produit ou la jointure de sous-requêtes.
1
SELECT ... FROM
2
(SELECT ... FROM
3
WHERE...) R1,
4
(SELECT ... FROM
5
WHERE...) R2
6
WHERE R1... = R2...
Méthode :
Cette extension est particulièrement utile pour les calculs d’agrégat après filtrage ou pour enchaîner les calculs d’agrégat (par exemple pour faire la moyenne de comptage après regroupement).
Exemple : Enchaînement de calculs d'aggrégat
1
SELECT AVG(c)
2
FROM (SELECT COUNT(b) AS c FROM t GROUP BY a)
Exemple : Calcul de la moyenne des ventes par jour de la semaine
1
SELECT AVG(q) FROM
2
(SELECT jds AS jds, COUNT(*) AS q
3
FROM ventes v
4
GROUP BY jds)