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.