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

RemarqueSous-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 ...

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

ExempleEnchaînement de calculs d'aggrégat

1
SELECT AVG(c)
2
FROM (SELECT COUNT(b) AS c FROM t GROUP BY a)

ExempleCalcul 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)