Nous allons voir dans ce chapitre comment agréger les données afin d'obtenir des informations à partir de plusieurs lignes. Pour cela on pourra se reposer sur des fonctions d'agrégation comme COUNT()
, SUM()
ou AVG()
.
GROUP BY
Ces fonctions peuvent être utilisé avec la commande GROUP BY
qui permet de grouper les éléments en fonction d'une ou plusieurs colonnes.
SELECT COUNT(id), duration
FROM recipes
GROUP BY duration;
Lors d'une agrégation on ne pourra sélectionner que les colonnes qui sont dans le GROUP BY
et celles qui utilisent les fonctions d'agrégation.
DISTINCT
En plus de la fonction d'agrégation il est aussi possible d'éviter les doublons à l'aide de l'instruction DISTINCT
dans les requêtes SELECT
.
SELECT DISTINCT r.id, r.title, r.slug
FROM recipes
JOIN categories_recipes cr ON cr.recipe_id = r.id
JOIN categories c ON c.id = cr.category_id
WHERE c.title = 'Dessert';
Cela pourra s'avérer utile lorsque l'on utilisera les jointures qui ont tendance à générer beaucoup de lignes en double.