sql >> Databáze >  >> RDS >> SQLite

SQLite Group By

Shrnutí :v tomto tutoriálu se naučíte používat SQLite GROUP BY klauzule k vytvoření sady souhrnných řádků ze sady řádků.

Úvod do SQLite GROUP BY klauzule

GROUP BY klauzule je volitelná klauzule SELECT prohlášení. GROUP BY klauzule vybrané skupiny řádků do souhrnných řádků podle hodnot jednoho nebo více sloupců.

GROUP BY klauzule vrací jeden řádek pro každou skupinu. Pro každou skupinu můžete použít agregační funkci, například MIN , MAX , SUM , COUNT nebo AVG poskytnout více informací o každé skupině.

Následující příkaz ilustruje syntaxi SQLite GROUP BY doložka.

SELECT 
    column_1,
    aggregate_function(column_2) 
FROM 
    table
GROUP BY 
    column_1,
    column_2;
Code language: SQL (Structured Query Language) (sql)

Zkuste to

GROUP BY klauzule následuje za FROM klauzule SELECT prohlášení. V případě, že příkaz obsahuje WHERE klauzule GROUP BY klauzule musí následovat za WHERE doložka.

Po GROUP BY klauzule je sloupec nebo seznam sloupců oddělených čárkami používaných k určení skupiny.

SQLite GROUP BY příklady

Používáme tracks tabulky ze vzorové databáze pro ukázku.

SQLite GROUP BY klauzule s COUNT funkce

Následující příkaz vrátí ID alba a počet skladeb na album. Používá GROUP BY klauzule seskupí skladby podle alba a použije COUNT() funkce pro každou skupinu.

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Zkuste to

Můžete použít ORDER BY klauzule k řazení skupin následovně:

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql)

Zkuste to

SQLite GROUP BY a INNER JOIN klauzule

Pomocí INNER JOIN můžete dotazovat data z více tabulek klauzuli, pak použijte GROUP BY klauzule k seskupení řádků do sady souhrnných řádků.

Například následující příkaz spojuje tracks tabulka s albums tabulku pro získání názvů alb a používá GROUP BY klauzule s COUNT funkce pro získání počtu skladeb na 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)

Zkuste to

SQLite GROUP BY s HAVING klauzule

Chcete-li filtrovat skupiny, použijte GROUP BY s HAVING doložka. Chcete-li například získat alba, která mají více než 15 skladeb, použijte následující příkaz:

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)

Zkuste to

SQLite GROUP BY klauzule s SUM příklad funkce

Můžete použít SUM funkce pro výpočet součtu za skupinu. Chcete-li například získat celkovou délku a bajty pro každé album, použijte SUM funkce pro výpočet celkových milisekund a bajtů.

SELECT
	albumid,
	SUM(milliseconds) length,
	SUM(bytes) size
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Zkuste to

SQLite GROUP BY s MAX , MIN a AVG funkce

Následující příkaz vrací ID alba, název alba, maximální délku, minimální délku a průměrnou délku skladeb v tracks tabulka.

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)

Zkuste to

SQLite GROUP BY příklad více sloupců

V předchozím příkladu jsme použili jeden sloupec v GROUP BY doložka. SQLite umožňuje seskupovat řádky do více sloupců.

Například pro seskupení skladeb podle typu média a žánru použijte následující příkaz:

SELECT
   MediaTypeId, 
   GenreId, 
   COUNT(TrackId)
FROM
   tracks
GROUP BY
   MediaTypeId, 
   GenreId;Code language: SQL (Structured Query Language) (sql)

Zkuste to

SQLite používá kombinaci hodnot MediaTypeId a GenreId sloupce jako skupinu, např. (1,1) a (1,2). Poté použije COUNT funkce pro vrácení počtu stop v každé skupině.

SQLite GROUP BY příklad data

Podívejte se na následující tabulku faktur ze vzorové databáze:

Následující výpis vrátí číslo faktury podle let.

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)

Zde je výstup:

V tomto příkladu:

  • Funkce STRFTIME('%Y', InvoiceDate) vrátí rok z řetězce data.
  • GROUP BY doložka seskupuje faktury podle let.
  • Funkce COUNT() vrátí číslo faktury v každém roce (nebo skupině).

V tomto tutoriálu jste se naučili používat SQLite GROUP BY klauzule k seskupení řádků do sady souhrnných řádků.


  1. Připojení 64bitové aplikace k Acombě

  2. Vložte více řádků s připravenými výkazy CHOP

  3. Úplný seznam znakových sad podporovaných MariaDB

  4. Proč je zálohování dat pro vaši organizaci důležité