sql >> Database >  >> RDS >> SQLite

SQLite groeperen op

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.


  1. MySQL-verbinding via SSH-tunnel - hoe een andere MySQL-server specificeren?

  2. Toegang tot de webservice vanuit de opgeslagen procedure van Oracle

  3. CHAR() Voorbeelden in MySQL

  4. Android studio getSlotFromBufferLocked:onbekende bufferfout