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

SQLite Raggruppa per

Riepilogo :in questo tutorial imparerai come usare SQLite GROUP BY clausola per creare un insieme di righe di riepilogo da un insieme di righe.

Introduzione a SQLite GROUP BY clausola

Il GROUP BY è una clausola facoltativa di SELECT dichiarazione. Il GROUP BY claudi un gruppo selezionato di righe in righe di riepilogo in base ai valori di una o più colonne.

Il GROUP BY la clausola restituisce una riga per ogni gruppo. Per ogni gruppo, puoi applicare una funzione aggregata come MIN , MAX , SUM , COUNT o AVG per fornire maggiori informazioni su ciascun gruppo.

La seguente istruzione illustra la sintassi di SQLite GROUP BY clausola.

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

Provalo

Il GROUP BY la clausola viene dopo il FROM clausola del SELECT dichiarazione. Nel caso in cui un'istruzione contenga un WHERE clausola, il GROUP BY la clausola deve venire dopo il WHERE clausola.

Di seguito il GROUP BY La clausola è una colonna o un elenco di colonne separate da virgole utilizzate per specificare il gruppo.

SQLite GROUP BY esempi

Usiamo i tracks tabella dal database di esempio per la dimostrazione.

SQLite GROUP BY clausola con COUNT funzione

La seguente istruzione restituisce l'ID dell'album e il numero di brani per album. Utilizza il GROUP BY clausola per raggruppare le tracce per album e applica il COUNT() funzione a ciascun gruppo.

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

Provalo

Puoi utilizzare il ORDER BY clausola per ordinare i gruppi come segue:

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

Provalo

SQLite GROUP BY e INNER JOIN clausola

Puoi eseguire query sui dati da più tabelle utilizzando INNER JOIN clausola, quindi utilizzare il GROUP BY clausola per raggruppare le righe in un insieme di righe di riepilogo.

Ad esempio, la seguente istruzione si unisce alle tracks tabella con gli albums tabella per ottenere i titoli dell'album e utilizza il GROUP BY clausola con il COUNT funzione per ottenere il numero di brani 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)

Provalo

SQLite GROUP BY con HAVING clausola

Per filtrare i gruppi, usa il GROUP BY con HAVING clausola. Ad esempio, per ottenere gli album con più di 15 tracce, utilizza la seguente istruzione:

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)

Provalo

SQLite GROUP BY clausola con SUM esempio di funzione

Puoi utilizzare il SUM funzione per calcolare il totale per gruppo. Ad esempio, per ottenere la lunghezza totale e i byte per ciascun album, utilizza il SUM funzione per calcolare millisecondi e byte totali.

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

Provalo

SQLite GROUP BY con MAX , MIN e AVG funzioni

La seguente istruzione restituisce l'ID dell'album, il titolo dell'album, la lunghezza massima, la lunghezza minima e la durata media delle tracce nei tracks tabella.

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)

Provalo

SQLite GROUP BY esempio di più colonne

Nell'esempio precedente, abbiamo utilizzato una colonna in GROUP BY clausola. SQLite ti consente di raggruppare le righe per più colonne.

Ad esempio, per raggruppare i brani in base al tipo di supporto e al genere, utilizzare la seguente istruzione:

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

Provalo

SQLite utilizza la combinazione di valori di MediaTypeId e GenreId colonne come un gruppo, ad esempio (1,1) e (1,2). Quindi applica il COUNT funzione per restituire il numero di tracce in ogni gruppo.

SQLite GROUP BY esempio di data

Vedere la seguente tabella fatture dal database di esempio:

La seguente dichiarazione restituisce il numero di fattura per anni.

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)

Ecco l'output:

In questo esempio:

  • La funzione STRFTIME('%Y', InvoiceDate) restituisce un anno da una stringa di data.
  • Il GROUP BY la clausola raggruppa le fatture per anni.
  • La funzione COUNT() restituisce il numero di fattura in ogni anno (o gruppo).

In questo tutorial, hai imparato a usare SQLite GROUP BY clausola per raggruppare le righe in un insieme di righe di riepilogo.