Riepilogo :in questo tutorial imparerai come usare SQLite HAVING
clausola per specificare una condizione di filtro per un gruppo o un aggregato.
Introduzione a SQLite HAVING
clausola
SQLite HAVING
è una clausola facoltativa di SELECT
dichiarazione. Il HAVING
La clausola specifica una condizione di ricerca per un gruppo.
Usi spesso HAVING
clausola con il GROUP BY
clausola. Il GROUP BY
La clausola raggruppa un insieme di righe in un insieme di righe o gruppi di riepilogo. Quindi il HAVING
la clausola filtra i gruppi in base a una condizione specifica.
Se usi il HAVING
clausola, devi includere il GROUP BY
clausola; in caso contrario, riceverai il seguente errore:
Error: a GROUP BY clause is required before HAVING
Code language: JavaScript (javascript)
Nota che il HAVING
la clausola viene applicata dopo GROUP BY
clausola, mentre il WHERE
viene applicata prima del GROUP BY
clausola.
Di seguito viene illustrata la sintassi di HAVING
clausola:
SELECT
column_1,
column_2,
aggregate_function (column_3)
FROM
table
GROUP BY
column_1,
column_2
HAVING
search_condition;
Code language: SQL (Structured Query Language) (sql)
In questa sintassi, il HAVING
La clausola valuta la search_condition
per ogni gruppo come espressione booleana. Include solo un gruppo nel set di risultati finale se la valutazione è vera.
SQLite HAVING
esempi di clausole
Useremo le tracks
tabella nel database di esempio per la dimostrazione.
Per trovare il numero di tracce per ciascun album, usa GROUP BY
clausola come segue:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Provalo
Per trovare il numero di tracce per l'album con ID 1, aggiungiamo un HAVING
clausola alla seguente affermazione:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Provalo
Abbiamo fatto riferimento a AlbumId
colonna nella HAVING
clausola.
Per trovare gli album che hanno il numero di brani compreso tra 18 e 20, utilizza la funzione di aggregazione nel HAVING
clausola come mostrato nella seguente dichiarazione:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING
COUNT(albumid) BETWEEN 18 AND 20
ORDER BY albumid;
Code language: SQL (Structured Query Language) (sql)
Provalo
SQLite HAVING
clausola con INNER JOIN
esempio
La seguente istruzione interroga i dati da tracks
e albums
tabelle utilizzando inner join per trovare gli album la cui lunghezza totale è maggiore di 60.000.000 di millisecondi.
SELECT
tracks.AlbumId,
title,
SUM(Milliseconds) AS length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.AlbumId
GROUP BY
tracks.AlbumId
HAVING
length > 60000000;
Code language: SQL (Structured Query Language) (sql)
Provalo
In questo tutorial, hai imparato a usare SQLite HAVING
clausola per specificare la condizione di ricerca per i gruppi.