Built-In Aggregate Part 2
Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 35 sur 72.
Parfois, nous devons utiliser des fonctions d'agrégation de manières plus complexes, comme comparer chaque ligne avec une valeur d'agrégation. C'est là que les requêtes imbriquées s'avèrent utiles.
Lorsque vous souhaitez effectuer des calculs qui combinent des lignes individuelles avec des valeurs agrégées, vous devez utiliser une requête imbriquée. Voici pourquoi :
Ceci ne donnera pas le résultat par ligne que vous souhaitez :
SELECT value + MIN(value)
FROM table1La raison est que les fonctions d'agrégation travaillent sur la colonne entière, alors que la référence 'value' essaie de travailler ligne par ligne. Pour résoudre cela, nous utilisons une requête imbriquée :
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1Cela fonctionne car la requête imbriquée (SELECT MIN(value) FROM table1) est exécutée en premier et renvoie une valeur unique, qui peut ensuite être utilisée dans la requête principale pour chaque ligne.
Cas d'utilisation courants pour les agrégats imbriqués :
1. Comparer chaque valeur à la moyenne
2. Calcul du pourcentage du total
3. Trouver les différences par rapport aux valeurs maximales ou minimales
Défi
FacileTables et colonnes disponibles :
<strong>items</strong>:<strong>id</strong>,<strong>price</strong>
Calculez de combien le prix de chaque article dépasse le prix moyen de tous les articles. Affichez l'ID de l'article, son prix et la différence par rapport à la moyenne. Nommez la colonne de différence diff_from_avg.
Ordonnez les résultats par la différence en ordre décroissant.
Aide-mémoire
Lors de la combinaison de lignes individuelles avec des valeurs agrégées, utilisez des requêtes imbriquées car les fonctions d'agrégation travaillent sur des colonnes entières tandis que les colonnes régulières travaillent ligne par ligne.
Cela ne fonctionnera pas :
SELECT value + MIN(value)
FROM table1Utilisez plutôt une requête imbriquée :
SELECT value + (SELECT MIN(value) FROM table1)
FROM table1La requête imbriquée s'exécute en premier et renvoie une valeur unique qui peut être utilisée dans la requête principale pour chaque ligne.
Cas d'utilisation courants :
- Comparer chaque valeur à la moyenne
- Calculer le pourcentage du total
- Trouver les différences par rapport aux valeurs maximales ou minimales
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