sql >> Database teknologi >  >> RDS >> SQLite

SQLite gruppe af

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


  1. Sådan opretter du en visning i SQL Server

  2. Bootstrapping SQL Express fra WiX?

  3. Fejl:vælg kommando nægtet bruger '<brugerid>'@'<ip-adresse>' for tabellen '<tabelnavn>'

  4. Postgres bruger eksisterer ikke?