Grouping Part 2
Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 37 sur 72.
Le mot-clé WHERE exécute une condition sur chaque enregistrement séparément. Par exemple :
SELECT * FROM table1
WHERE col1 > col2La condition col1 > col2 sera exécutée sur chaque enregistrement pour vérifier si elle est remplie.
Mais que faire si nous voulons filtrer des résultats agrégés ? Par exemple :
SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY categoryCela ne fonctionnera pas car WHERE ne peut pas vérifier les agrégations. Pour cela, nous avons le mot-clé HAVING. Il filtre les données selon la condition d'agrégation.
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40Cela filtrera toutes les catégories pour lesquelles le prix moyen est supérieur à 40.
Si nous voulons combiner les clauses HAVING et WHERE, nous écrirons :
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40Cela va d'abord parcourir enregistrement par enregistrement et filtrer tous les enregistrements pour lesquels le price est supérieur à 25, et ce n'est qu'après cela qu'il exécutera la clause GROUP BY et filtrera chaque category pour laquelle le prix moyen est supérieur à 40.
Défi
MoyenTables et colonnes disponibles :
<strong>earthquakes</strong>:<strong>location</strong>,<strong>amplitude</strong>,<strong>period</strong>
L'échelle de Richter est une échelle logarithmique utilisée pour mesurer la magnitude des séismes.
Nous devons retourner la magnitude moyenne pour chaque localisation parmi tous les séismes majeurs.
Un séisme majeur est défini ainsi :
- L'amplitude est supérieure ou égale à 1
- La période des ondes est supérieure ou égale à 1 minute
Pour ce défi, nous utiliserons une formule différente : M = (A/T)<sup>2</sup> / T, ce qui est équivalent à M = ((A/T)*(A/T)) / T.
Retournez la localisation et la magnitude moyenne de chaque localisation en incluant uniquement les séismes majeurs (nommez la colonne avg_magnitude). N'incluez dans votre résultat que les localisations où la avg_magnitude est supérieure à 1.
Arrondissez les résultats à 2 décimales.
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