Subquery

PostgreSQL 🟡 Mid

Definition

Requete imbriquee dans une autre requete, utilisable dans SELECT, FROM, WHERE ou HAVING. Peut etre correlee (reference la requete externe) ou non-correlee (independante).

Analogie

Une question dans une question : 'Qui gagne plus que la moyenne des salaires ?'

Exemple de code

SELECT name FROM employees
WHERE salary > (
  SELECT AVG(salary) FROM employees
);
-- Ou dans FROM
SELECT * FROM (
  SELECT name, COUNT(*) as cnt
  FROM orders GROUP BY name
) sub WHERE cnt > 5;

Cas d'usage

Filtrer sur un resultat agrege ou creer des tables derivees pour des requetes complexes.

Anti-pattern

Utiliser des sous-requetes correlees dans le SELECT quand un JOIN serait plus performant.

Termes lies

#sgbd#interview#database#postgresql