sql >> Databasteknik >  >> RDS >> SQLite

SQLite Group By

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.


  1. Vad är MELLAN Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 124

  2. Använder sp_help_jobschedule i SQL Server

  3. Hur kan vi definiera utdataparameterstorlek i lagrad procedur?

  4. Behöver hjälp med beräkning med två datamängder med Expression SSRS