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 BY
Klausel 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.