Résumé :dans ce tutoriel, vous apprendrez à utiliser SQLite GROUP BY
clause pour créer un ensemble de lignes récapitulatives à partir d'un ensemble de lignes.
Introduction à SQLite GROUP BY
clause
Le GROUP BY
la clause est une clause facultative du SELECT
déclaration. Le GROUP BY
clause un groupe sélectionné de lignes en lignes récapitulatives par valeurs d'une ou plusieurs colonnes.
Le GROUP BY
La clause renvoie une ligne pour chaque groupe. Pour chaque groupe, vous pouvez appliquer une fonction d'agrégation telle que MIN
, MAX
, SUM
, COUNT
, ou AVG
pour fournir plus d'informations sur chaque groupe.
L'instruction suivante illustre la syntaxe du SQLite GROUP BY
clause.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Le GROUP BY
la clause vient après le FROM
clause du SELECT
déclaration. Dans le cas où une instruction contient un WHERE
clause, le GROUP BY
la clause doit venir après le WHERE
clause.
Après le GROUP BY
clause est une colonne ou une liste de colonnes séparées par des virgules utilisées pour spécifier le groupe.
SQLite GROUP BY
exemples
Nous utilisons les tracks
table de l'exemple de base de données pour la démonstration.
SQLite GROUP BY
clause avec COUNT
fonction
L'instruction suivante renvoie l'identifiant de l'album et le nombre de pistes par album. Il utilise le GROUP BY
clause pour regrouper les pistes par album et applique le COUNT()
fonction à chaque groupe.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Vous pouvez utiliser le ORDER BY
clause pour trier les groupes comme suit :
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite GROUP BY
et INNER JOIN
clause
Vous pouvez interroger les données de plusieurs tables à l'aide de la INNER JOIN
clause, puis utilisez la clause GROUP BY
clause pour regrouper les lignes dans un ensemble de lignes récapitulatives.
Par exemple, l'instruction suivante joint les tracks
tableau avec les albums
table pour obtenir les titres de l'album et utilise le GROUP BY
clause avec le COUNT
fonction pour obtenir le nombre de pistes par album.
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite GROUP BY
avec HAVING
clause
Pour filtrer les groupes, vous utilisez le GROUP BY
avec HAVING
clause. Par exemple, pour obtenir les albums contenant plus de 15 pistes, vous utilisez l'instruction suivante :
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING COUNT(trackid) > 15;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite GROUP BY
clause avec SUM
exemple de fonction
Vous pouvez utiliser le SUM
fonction pour calculer le total par groupe. Par exemple, pour obtenir la longueur totale et les octets pour chaque album, vous utilisez le SUM
fonction pour calculer le total des millisecondes et des octets.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite GROUP BY
avec MAX
, MIN
, et AVG
fonctions
L'instruction suivante renvoie l'identifiant de l'album, le titre de l'album, la longueur maximale, la longueur minimale et la longueur moyenne des pistes dans les tracks
tableau.
SELECT
tracks.albumid,
title,
min(milliseconds),
max(milliseconds),
round(avg(milliseconds),2)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite GROUP BY
exemple de plusieurs colonnes
Dans l'exemple précédent, nous avons utilisé une colonne dans le GROUP BY
clause. SQLite vous permet de regrouper les lignes par plusieurs colonnes.
Par exemple, pour regrouper les pistes par type de média et genre, vous utilisez l'instruction suivante :
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite utilise la combinaison de valeurs de MediaTypeId
et GenreId
colonnes en tant que groupe, par exemple (1,1) et (1,2). Il applique ensuite le COUNT
fonction pour renvoyer le nombre de pistes dans chaque groupe.
SQLite GROUP BY
exemple de date
Consultez le tableau des factures suivant de l'exemple de base de données :
L'instruction suivante renvoie le nombre de factures par années.
SELECT
STRFTIME('%Y', InvoiceDate) InvoiceYear,
COUNT(InvoiceId) InvoiceCount
FROM
invoices
GROUP BY
STRFTIME('%Y', InvoiceDate)
ORDER BY
InvoiceYear;
Code language: SQL (Structured Query Language) (sql)
Voici le résultat :
Dans cet exemple :
- La fonction
STRFTIME('%Y', InvoiceDate)
renvoie une année à partir d'une chaîne de date. - Le
GROUP BY
la clause regroupe les factures par années. - La fonction
COUNT()
renvoie le nombre de factures de chaque année (ou groupe).
Dans ce tutoriel, vous avez appris à utiliser le SQLite GROUP BY
clause pour regrouper les lignes dans un ensemble de lignes récapitulatives.