SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite-Gruppierung nach

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.