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 HAVINGCode 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.