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

SQLite Avere

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.