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.
SELECT ... FROM
(SELECT ...
FROM ...
WHERE ...)
WHERE ...
Il est possible d'imbriquer successivement plusieurs sous-requêtes.
SELECT ... FROM
(SELECT ... FROM
(SELECT...
FROM ...
WHERE)
WHERE ...)
WHERE ...
Il est possible de faire le produit ou la jointure de sous-requêtes.
SELECT ... FROM
(SELECT ... FROM
WHERE...) R1,
(SELECT ... FROM
WHERE...) R2
WHERE R1... = R2...
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).
SELECT AVG(c)
FROM (SELECT COUNT(b) AS c FROM t GROUP BY a)
SELECT AVG(q) FROM
(SELECT jds AS jds, COUNT(*) AS q
FROM ventes v
GROUP BY jds)