Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite GROUP BY klausul for at lave et sæt oversigtsrækker ud fra et sæt rækker.
Introduktion til SQLite GROUP BY klausul
GROUP BY klausul er en valgfri klausul af SELECT udmelding. GROUP BY klausuler en valgt gruppe rækker til opsummeringsrækker efter værdier af en eller flere kolonner.
GROUP BY klausul returnerer en række for hver gruppe. For hver gruppe kan du anvende en aggregeret funktion såsom MIN , MAX , SUM , COUNT eller AVG for at give flere oplysninger om hver gruppe.
Følgende sætning illustrerer syntaksen for 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) Prøv det
GROUP BY klausulen kommer efter FROM klausul af SELECT udmelding. Hvis en sætning indeholder en WHERE klausulen, GROUP BY klausulen skal komme efter WHERE klausul.
Efter GROUP BY klausul er en kolonne eller en liste over kommaseparerede kolonner, der bruges til at angive gruppen.
SQLite GROUP BY eksempler
Vi bruger tracks tabel fra prøvedatabasen til demonstrationen.
SQLite GROUP BY klausul med COUNT funktion
Følgende erklæring returnerer album-id'et og antallet af numre pr. album. Den bruger GROUP BY klausul for at gruppere numre efter album og anvende COUNT() funktion til hver gruppe.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Prøv det
Du kan bruge ORDER BY klausul for at sortere grupperne som følger:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) Prøv det
SQLite GROUP BY og INNER JOIN klausul
Du kan forespørge data fra flere tabeller ved hjælp af INNER JOIN klausul, og brug derefter GROUP BY klausul for at gruppere rækker i et sæt oversigtsrækker.
For eksempel forbinder følgende sætning tracks tabel med albums tabel for at få albummets titler og bruger GROUP BY klausul med COUNT funktion for at få antallet af numre pr. 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) Prøv det
SQLite GROUP BY med HAVING klausul
For at filtrere grupper bruger du GROUP BY med HAVING klausul. For at få de album, der har mere end 15 numre, bruger du f.eks. følgende sætning:
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) Prøv det
SQLite GROUP BY klausul med SUM funktionseksempel
Du kan bruge SUM funktion til at beregne total pr. gruppe. For eksempel, for at få samlet længde og bytes for hvert album, bruger du SUM funktion til at beregne det samlede antal millisekunder og bytes.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Prøv det
SQLite GROUP BY med MAX , MIN og AVG funktioner
Følgende sætning returnerer album-id, albumtitel, maksimumlængde, minimumlængde og den gennemsnitlige længde af spor i tracks tabel.
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) Prøv det
SQLite GROUP BY eksempel på flere kolonner
I det foregående eksempel har vi brugt en kolonne i GROUP BY klausul. SQLite giver dig mulighed for at gruppere rækker efter flere kolonner.
For at gruppere numre efter medietype og genre bruger du f.eks. følgende sætning:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) Prøv det
SQLite bruger kombinationen af værdier af MediaTypeId og GenreId kolonner som en gruppe, f.eks. (1,1) og (1,2). Den anvender derefter COUNT funktion for at returnere antallet af spor i hver gruppe.
SQLite GROUP BY dato eksempel
Se følgende fakturatabel fra eksempeldatabasen:
Følgende opgørelse returnerer antallet af fakturaer efter å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) Her er outputtet:
I dette eksempel:
- Funktionen
STRFTIME('%Y', InvoiceDate)returnerer et år fra en datostreng. GROUP BYklausul grupperer fakturaerne efter år.- Funktionen
COUNT()returnerer antallet af fakturaer i hvert år (eller gruppe).
I denne øvelse har du lært, hvordan du bruger SQLite GROUP BY klausul for at gruppere rækker i et sæt oversigtsrækker.