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.

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...)
4
(SELECT ... FROM 
5
WHERE...)
6
WHERE ...

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