Sammanfattning :i denna handledning kommer du att lära dig hur du använder SQLite GROUP BY sats för att göra en uppsättning sammanfattningsrader från en uppsättning rader.
Introduktion till SQLite GROUP BY klausul
GROUP BY sats är en valfri sats i SELECT påstående. GROUP BY klausulera en vald grupp av rader till sammanfattningsrader efter värden i en eller flera kolumner.
GROUP BY klausul returnerar en rad för varje grupp. För varje grupp kan du använda en aggregerad funktion såsom MIN , MAX , SUM , COUNT , eller AVG för att ge mer information om varje grupp.
Följande sats illustrerar syntaxen för SQLite GROUP BY klausul.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql) Prova det
GROUP BY satsen kommer efter FROM satsen i SELECT påstående. Om en sats innehåller en WHERE satsen, GROUP BY satsen måste komma efter WHERE klausul.
Följer GROUP BY sats är en kolumn eller en lista med kommaseparerade kolumner som används för att specificera gruppen.
SQLite GROUP BY exempel
Vi använder tracks tabell från exempeldatabasen för demonstrationen.
SQLite GROUP BY sats med COUNT funktion
Följande uttalande returnerar album-id och antalet spår per album. Den använder GROUP BY sats för att gruppera spår efter album och tillämpar COUNT() funktion till varje grupp.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Prova det
Du kan använda ORDER BY för att sortera grupperna enligt följande:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) Prova det
SQLite GROUP BY och INNER JOIN klausul
Du kan söka efter data från flera tabeller med INNER JOIN sats, använd sedan GROUP BY sats för att gruppera rader i en uppsättning sammanfattningsrader.
Till exempel, följande sats ansluter till tracks tabell med albums tabellen för att få albumets titlar och använder GROUP BY sats med COUNT funktion för att få antalet spår per 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) Prova det
SQLite GROUP BY med HAVING klausul
För att filtrera grupper använder du GROUP BY med HAVING klausul. Till exempel, för att få album som har fler än 15 spår, använder du följande uttalande:
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) Prova det
SQLite GROUP BY sats med SUM funktionsexempel
Du kan använda SUM funktion för att beräkna totalsumman per grupp. Till exempel, för att få total längd och byte för varje album använder du SUM funktion för att beräkna totalt antal millisekunder och byte.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Prova det
SQLite GROUP BY med MAX , MIN och AVG funktioner
Följande sats returnerar album-id, albumtitel, maxlängd, minsta längd och medellängden på spåren i tracks bord.
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) Prova det
SQLite GROUP BY exempel på flera kolumner
I föregående exempel har vi använt en kolumn i GROUP BY klausul. SQLite låter dig gruppera rader efter flera kolumner.
Till exempel, för att gruppera spår efter mediatyp och genre, använder du följande uttalande:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) Prova det
SQLite använder kombinationen av värden för MediaTypeId och GenreId kolumner som en grupp, t.ex. (1,1) och (1,2). Den tillämpar sedan COUNT funktion för att returnera antalet spår i varje grupp.
SQLite GROUP BY datumexempel
Se följande fakturatabell från exempeldatabasen:
Följande uttalande returnerar antalet fakturor per år.
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) Här är resultatet:
I det här exemplet:
- Funktionen
STRFTIME('%Y', InvoiceDate)returnerar ett år från en datumsträng. GROUP BYklausul grupperar fakturorna efter år.- Funktionen
COUNT()returnerar antalet fakturor i varje år (eller grupp).
I den här handledningen har du lärt dig hur du använder SQLite GROUP BY sats för att gruppera rader i en uppsättning sammanfattningsrader.