Zusammenfassung :In diesem Tutorial lernen Sie, wie Sie SQLite GROUP BY verwenden -Klausel, um aus einer Reihe von Zeilen eine Gruppe von Zusammenfassungszeilen zu erstellen.
Einführung in SQLite GROUP BY Klausel
Die GROUP BY -Klausel ist eine optionale Klausel von SELECT Erklärung. Die GROUP BY Klausel eine ausgewählte Gruppe von Zeilen in Zusammenfassungszeilen nach Werten einer oder mehrerer Spalten.
Die GROUP BY -Klausel gibt eine Zeile für jede Gruppe zurück. Für jede Gruppe können Sie eine Aggregatfunktion wie MIN anwenden , MAX , SUM , COUNT , oder AVG um mehr Informationen über jede Gruppe bereitzustellen.
Die folgende Anweisung veranschaulicht die Syntax von SQLite GROUP BY Klausel.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
Die GROUP BY -Klausel kommt nach FROM -Klausel des SELECT Erklärung. Falls eine Anweisung ein WHERE enthält -Klausel, die GROUP BY -Klausel muss nach WHERE kommen Klausel.
Nach dem GROUP BY -Klausel ist eine Spalte oder eine Liste von durch Kommas getrennten Spalten, die verwendet wird, um die Gruppe anzugeben.
SQLite GROUP BY Beispiele
Wir verwenden die tracks Tabelle aus der Beispieldatenbank für die Demonstration.
SQLite GROUP BY Klausel mit COUNT Funktion
Die folgende Anweisung gibt die Album-ID und die Anzahl der Titel pro Album zurück. Es verwendet den GROUP BY -Klausel gruppiert Tracks nach Album und wendet den COUNT() an Funktion für jede Gruppe.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
Sie können den ORDER BY verwenden -Klausel, um die Gruppen wie folgt zu sortieren:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
SQLite GROUP BY und INNER JOIN Klausel
Mit dem INNER JOIN können Sie Daten aus mehreren Tabellen abfragen Klausel, dann verwenden Sie die GROUP BY -Klausel zum Gruppieren von Zeilen in einem Satz von Zusammenfassungszeilen.
Die folgende Anweisung verbindet beispielsweise die tracks Tabelle mit den albums Tabelle, um die Titel des Albums zu erhalten, und verwendet den GROUP BY -Klausel mit dem COUNT Funktion, um die Anzahl der Titel pro Album abzurufen.

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) Probieren Sie es aus
SQLite GROUP BY mit HAVING Klausel
Um Gruppen zu filtern, verwenden Sie den GROUP BY mit HAVING Klausel. Um beispielsweise die Alben mit mehr als 15 Titeln abzurufen, verwenden Sie die folgende Anweisung:
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) Probieren Sie es aus
SQLite GROUP BY Klausel mit SUM Funktionsbeispiel
Sie können die SUM verwenden Funktion zur Berechnung der Summe pro Gruppe. Um beispielsweise die Gesamtlänge und Bytes für jedes Album zu erhalten, verwenden Sie den SUM Funktion zur Berechnung der gesamten Millisekunden und Bytes.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
SQLite GROUP BY mit MAX , MIN und AVG Funktionen
Die folgende Anweisung gibt die Album-ID, den Albumtitel, die maximale Länge, die minimale Länge und die durchschnittliche Länge der Titel in tracks zurück Tabelle.
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) Probieren Sie es aus
SQLite GROUP BY Beispiel für mehrere Spalten
Im vorherigen Beispiel haben wir eine Spalte in GROUP BY verwendet Klausel. Mit SQLite können Sie Zeilen nach mehreren Spalten gruppieren.
Um beispielsweise Tracks nach Medientyp und Genre zu gruppieren, verwenden Sie die folgende Anweisung:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) Probieren Sie es aus
SQLite verwendet die Wertekombination von MediaTypeId und GenreId Spalten als Gruppe, z. B. (1,1) und (1,2). Es wendet dann den COUNT an Funktion, um die Anzahl der Tracks in jeder Gruppe zurückzugeben.
SQLite GROUP BY Datumsbeispiel
Siehe folgende Rechnungstabelle aus der Beispieldatenbank:
Die folgende Anweisung gibt die Anzahl der Rechnungen nach Jahren zurück.
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) Hier ist die Ausgabe:
In diesem Beispiel:
- Die Funktion
STRFTIME('%Y', InvoiceDate)gibt ein Jahr aus einer Datumszeichenfolge zurück. - Der
GROUP BYKlausel gruppiert die Rechnungen nach Jahren. - Die Funktion
COUNT()gibt die Anzahl der Rechnungen in jedem Jahr (oder Gruppe) zurück.
In diesem Tutorial haben Sie gelernt, wie Sie die SQLite GROUP BY verwenden -Klausel zum Gruppieren von Zeilen in einem Satz von Zusammenfassungszeilen.