Samenvatting :in deze tutorial leer je hoe je SQLite GROUP BY
. gebruikt clausule om een reeks samenvattingsrijen te maken van een reeks rijen.
Inleiding tot SQLite GROUP BY
clausule
De GROUP BY
clausule is een optionele clausule van de SELECT
uitspraak. De GROUP BY
clausule een geselecteerde groep rijen in samenvattingsrijen op basis van waarden van een of meer kolommen.
De GROUP BY
clausule retourneert één rij voor elke groep. Voor elke groep kunt u een aggregatiefunctie toepassen, zoals MIN
, MAX
, SUM
, COUNT
, of AVG
om meer informatie over elke groep te geven.
De volgende instructie illustreert de syntaxis van de SQLite GROUP BY
clausule.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql)
Probeer het
De GROUP BY
clausule komt na de FROM
clausule van de SELECT
uitspraak. Als een statement een WHERE
. bevat clausule, de GROUP BY
clausule moet komen na de WHERE
clausule.
Volg de GROUP BY
clausule is een kolom of een lijst met door komma's gescheiden kolommen die worden gebruikt om de groep te specificeren.
SQLite GROUP BY
voorbeelden
We gebruiken de tracks
tabel uit de voorbeelddatabase voor de demonstratie.
SQLite GROUP BY
clausule met COUNT
functie
De volgende instructie retourneert de album-ID en het aantal nummers per album. Het gebruikt de GROUP BY
clausule om tracks per album te groeperen en past de COUNT()
. toe functie voor elke groep.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Probeer het
U kunt de ORDER BY
. gebruiken clausule om de groepen als volgt te sorteren:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;
Code language: SQL (Structured Query Language) (sql)
Probeer het
SQLite GROUP BY
en INNER JOIN
clausule
U kunt gegevens uit meerdere tabellen opvragen met behulp van de INNER JOIN
clausule, gebruik dan de GROUP BY
clausule om rijen te groeperen in een reeks samenvattingsrijen.
De volgende instructie voegt bijvoorbeeld de tracks
. samen tabel met de albums
tabel om de titels van het album te krijgen en gebruikt de GROUP BY
clausule met de COUNT
functie om het aantal nummers per album te krijgen.
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)
Probeer het
SQLite GROUP BY
met HAVING
clausule
Om groepen te filteren, gebruik je de GROUP BY
met HAVING
clausule. Om bijvoorbeeld albums te krijgen met meer dan 15 nummers, gebruikt u de volgende instructie:
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)
Probeer het
SQLite GROUP BY
clausule met SUM
functie voorbeeld
U kunt de SUM
. gebruiken functie om het totaal per groep te berekenen. Om bijvoorbeeld de totale lengte en bytes voor elk album te krijgen, gebruikt u de SUM
functie om het totale aantal milliseconden en bytes te berekenen.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Probeer het
SQLite GROUP BY
met MAX
, MIN
, en AVG
functies
De volgende instructie retourneert de album-ID, albumtitel, maximale lengte, minimale lengte en de gemiddelde lengte van tracks in de tracks
tafel.
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)
Probeer het
SQLite GROUP BY
voorbeeld meerdere kolommen
In het vorige voorbeeld hebben we één kolom gebruikt in de GROUP BY
clausule. Met SQLite kunt u rijen groeperen op meerdere kolommen.
Als u bijvoorbeeld tracks wilt groeperen op mediatype en genre, gebruikt u de volgende instructie:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;
Code language: SQL (Structured Query Language) (sql)
Probeer het
SQLite gebruikt de combinatie van waarden van MediaTypeId
en GenreId
kolommen als een groep, bijvoorbeeld (1,1) en (1,2). Vervolgens wordt de COUNT
. toegepast functie om het aantal tracks in elke groep terug te geven.
SQLite GROUP BY
datum voorbeeld
Zie de volgende facturentabel uit de voorbeelddatabase:
De volgende verklaring geeft het aantal facturen per jaar terug.
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 is de uitvoer:
In dit voorbeeld:
- De functie
STRFTIME('%Y', InvoiceDate)
geeft een jaar terug vanaf een datumtekenreeks. - De
GROUP BY
clausule groepeert de facturen per jaar. - De functie
COUNT()
geeft het aantal facturen in elk jaar (of groep) terug.
In deze tutorial heb je geleerd hoe je de SQLite GROUP BY
. gebruikt clausule om rijen te groeperen in een reeks samenvattingsrijen.