Menu
Coddy logo textTech

Subqueries Part 2

Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 39 sur 72.

Il existe trois principaux types de sous-requêtes :

  1. Sous-requêtes scalaires - Retourne une seule valeur (une ligne, une colonne)
  2. Sous-requêtes de ligne - Retourne une seule ligne avec plusieurs colonnes
  3. Sous-requêtes de table - Retourne plusieurs lignes et colonnes

Par exemple, voici quelques cas d'utilisation pour chaque type de sous-requête :

Sous-requête scalaire - Trouver les employés qui gagnent plus que le salaire moyen :

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Sous-requête de ligne - Trouver le(s) employé(s) ayant le même département et le même salaire qu'Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Sous-requêtes de table - Afficher les départements et leur nombre d'employés

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Remarquez les cas d'utilisation :

  • Scalaire - Comparaisons simples (>, <, =)
  • Lorsque vous devez faire correspondre plusieurs colonnes
  • Lorsque vous devez interroger un ensemble de résultats
challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • shop : price, quantity, category, list_date

Trouvez les catégories où leur quantité totale est supérieure à la moyenne de toutes les quantités dans la boutique.

Important : Vous devez utiliser une sous-requête à l'intérieur de la clause HAVING pour calculer la moyenne. N'utilisez pas une valeur codée en dur ou une requête séparée — la sous-requête doit calculer AVG(quantity) à partir de la table shop directement à l'intérieur de HAVING.

Étapes pour résoudre :

  1. D'abord, écrivez une sous-requête qui calcule la moyenne de toutes les quantités dans la boutique : SELECT AVG(quantity) FROM shop
  2. Ensuite, pour chaque catégorie, sommez leurs quantités et comparez avec cette sous-requête en utilisant le mot-clé HAVING

Aide-mémoire

Il existe trois principaux types de sous-requêtes :

  1. Sous-requêtes scalaires - Retourne une seule valeur (une ligne, une colonne)
  2. Sous-requêtes de ligne - Retourne une seule ligne avec plusieurs colonnes
  3. Sous-requêtes de table - Retourne plusieurs lignes et colonnes

Sous-requête scalaire - Comparaisons simples (>, <, =) :

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Sous-requête de ligne - Correspondance sur plusieurs colonnes :

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Sous-requête de table - Requête à partir d'un ensemble de résultats :

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Essayez vous-même

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les fondamentaux