Exercice 27 / 60

Sous-requête

ConsigneAffiche le nom et la note des etudiants dont la note dépasse la moyenne générale (calcule cette moyenne avec une sous-requête). Colonnes : nom, note.

📖 Cours

Une sous-requête est une requête à l'intérieur d'une autre, entre parenthèses. Quand elle ne dépend pas de la requête principale, elle est calculée une fois pour toutes, avant elle. Syntaxe : where colonne > (select ... from ...);

Exemple (table produits) :

SELECT nom, prix FROM produitsWHERE prix > (SELECT AVG(prix) FROM produits);-> les produits au-dessus du prix moyen

La sous-requête calcule d'abord la moyenne, puis on compare chaque prix a ce résultat.

Une sous-requête indépendante est calculée en premier, et son résultat devient la borne à laquelle chaque ligne est ensuite comparée
Une sous-requête indépendante est calculée en premier, et son résultat devient la borne à laquelle chaque ligne est ensuite comparée

Attention : si la sous-requête reprend une colonne de la requête principale (on parle alors de sous-requête corrélée), elle ne peut pas être calculée à l'avance. PostgreSQL la relance pour chaque ligne, comme ici :

SELECT c.nom, (SELECT COUNT(*) FROM commandes cmd WHERE cmd.client_id = c.id) FROM clients c;

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →