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