SQLite
 sql >> Base de données >  >> RDS >> SQLite

Regrouper SQLite par

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.