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 :
- Sous-requêtes scalaires - Retourne une seule valeur (une ligne, une colonne)
- Sous-requêtes de ligne - Retourne une seule ligne avec plusieurs colonnes
- 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
Défi
FacileTables 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 :
- D'abord, écrivez une sous-requête qui calcule la moyenne de toutes les quantités dans la boutique :
SELECT AVG(quantity) FROM shop - 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 :
- Sous-requêtes scalaires - Retourne une seule valeur (une ligne, une colonne)
- Sous-requêtes de ligne - Retourne une seule ligne avec plusieurs colonnes
- 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
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns