Fonctions d'agrégation
COUNT() : Fonction d'agrégation qui retourne le nombre de lignes dans un jeu de résultats.
COUNT(*) : Compte toutes les lignes
COUNT(colonne) : Compte les valeurs non NULL
COUNT(DISTINCT colonne) : Compte les valeurs uniques
Déterminer dans quelle table compter les enregistrements
Décider si on compte toutes les lignes ou seulement les non NULL
Utiliser la syntaxe appropriée pour le type de comptage
Utiliser AS pour nommer la colonne de résultat
Obtenir le résultat du comptage
COUNT() permet de compter le nombre de lignes dans un jeu de résultats
• COUNT(*) : Compte toutes les lignes, y compris celles avec NULL
• COUNT(colonne) : Compte seulement les valeurs non NULL
• Performance : COUNT(*) est généralement plus rapide que COUNT(colonne)
SUM() : Fonction d'agrégation qui calcule la somme des valeurs d'une colonne numérique.
Sélectionner une colonne de type numérique (INT, DECIMAL, etc.)
Utiliser SUM(nom_colonne) dans la clause SELECT
SUM ignore automatiquement les valeurs NULL
Utiliser GROUP BY pour sommer par catégories
Utiliser HAVING pour filtrer les résultats agrégés
SUM() calcule la somme des valeurs d'une colonne numérique
• Type numérique : SUM ne fonctionne qu'avec des colonnes numériques
• NULL ignoré : Les valeurs NULL sont ignorées dans le calcul
• GROUP BY : Nécessaire pour sommer par catégories
AVG() : Fonction d'agrégation qui calcule la moyenne des valeurs d'une colonne numérique.
Sélectionner une colonne de type numérique
Utiliser AVG(nom_colonne) dans la clause SELECT
AVG = SUM(valeurs) / COUNT(valeurs non NULL)
Les valeurs NULL sont exclues du calcul
Utiliser GROUP BY pour calculer des moyennes par catégorie
Utiliser ROUND pour limiter le nombre de décimales
AVG() calcule la moyenne des valeurs d'une colonne numérique
• Type numérique : AVG ne fonctionne qu'avec des colonnes numériques
• NULL ignoré : Les valeurs NULL sont exclues du calcul
• Division par zéro : AVG retourne NULL si aucune valeur n'est présente
MIN() et MAX() : Fonctions d'agrégation qui retournent respectivement la valeur minimale et maximale d'une colonne.
Utilisation des fonctions
Déterminer la colonne pour laquelle trouver le min/max
MIN() pour la plus petite valeur, MAX() pour la plus grande
Utiliser MIN(nom_colonne) ou MAX(nom_colonne)
Utiliser GROUP BY pour trouver min/max par catégorie
Les valeurs NULL sont ignorées dans le calcul
Peut être utilisée avec COUNT, SUM, AVG dans la même requête
MIN() et MAX() trouvent les valeurs extrêmes d'une colonne
• Any type : Fonctionne avec n'importe quel type de données (numérique, texte, date)
• NULL ignoré : Les valeurs NULL sont exclues du calcul
• Tri alphabétique : Pour les chaînes, MIN/MAX utilisent l'ordre alphabétique
GROUP BY : Clause qui regroupe les lignes ayant les mêmes valeurs dans les colonnes spécifiées pour appliquer des fonctions d'agrégation.
Déterminer sur quelle(s) colonne(s) grouper les données
Respecter l'ordre des clauses SQL
Toutes les colonnes non agrégées doivent être dans GROUP BY
Utiliser COUNT, SUM, AVG, MIN, MAX sur les sous-groupes
Utiliser HAVING au lieu de WHERE pour filtrer les groupes
Utiliser ORDER BY pour trier les groupes
GROUP BY permet d'appliquer des fonctions d'agrégation par catégories
• Ordre des clauses : SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
• Colonne dans SELECT : Toutes les colonnes non agrégées doivent être dans GROUP BY
• Filtres : Utiliser HAVING pour filtrer les groupes, WHERE pour les lignes
- SELECT : Quelles colonnes récupérer
- FROM : D'où proviennent les données
- WHERE : Filtre les lignes avant agrégation
- GROUP BY : Regroupe les lignes par valeurs communes
- HAVING : Filtre les groupes après agrégation
- ORDER BY : Trie les résultats finaux
- Les fonctions d'agrégation ne peuvent pas être utilisées dans la clause WHERE
- Les colonnes non agrégées dans SELECT doivent figurer dans GROUP BY
- Les valeurs NULL sont ignorées par les fonctions d'agrégation
- La clause HAVING est utilisée pour filtrer les résultats agrégés
- GROUP BY est exécuté après WHERE mais avant HAVING et ORDER BY