Resumo : neste tutorial, você aprenderá como usar HAVING
a cláusula SQLite para especificar uma condição de filtro para um grupo ou agregado.
HAVING
Introdução à cláusula SQLite
A cláusula SQLite HAVING
é uma cláusula opcional da SELECT
instrução. A HAVING
cláusula especifica uma condição de pesquisa para um grupo.
Você costuma usar a HAVING
cláusula com a GROUP BY
cláusula. A GROUP BY
cláusula agrupa um conjunto de linhas em um conjunto de linhas ou grupos de resumo. Em seguida, a HAVING
cláusula filtra grupos com base em uma condição especificada.
Se você usar a HAVING
cláusula, deverá incluí-la GROUP BY
; caso contrário, você receberá o seguinte erro:
Error: a GROUP BY clause is required before HAVING
Linguagem de código: JavaScript ( javascript )
Observe que a HAVING
cláusula é aplicada após GROUP BY
a cláusula, enquanto a WHERE
cláusula é aplicada antes da GROUP BY
cláusula.
O seguinte ilustra a sintaxe da HAVING
cláusula:
SELECT
column_1,
column_2,
aggregate_function (column_3)
FROM
table
GROUP BY
column_1,
column_2
HAVING
search_condition;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, a HAVING
cláusula avalia search_condition
for cada grupo como uma expressão booleana. Inclui apenas um grupo no conjunto de resultados final se a avaliação for verdadeira.
HAVING
Exemplos de cláusulas SQLite
Usaremos a tracks
tabela do banco de dados de exemplo para demonstração.
Para encontrar o número de faixas de cada álbum, você usa GROUP BY
a seguinte cláusula:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para encontrar o número de faixas do álbum com id 1, adicionamos uma HAVING
cláusula à seguinte declaração:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Referimo-nos à AlbumId
coluna na HAVING
cláusula.
Para encontrar álbuns com número de faixas entre 18 e 20, você usa a função agregada na HAVING
cláusula conforme mostrado na seguinte instrução:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING
COUNT(albumid) BETWEEN 18 AND 20
ORDER BY albumid;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Cláusula SQLite HAVING
com INNER JOIN
exemplo
A instrução a seguir consulta dados tracks
e albums
tabelas usando junção interna para localizar álbuns com duração total superior a 60.000.000 milissegundos.
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;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, você aprendeu como usar HAVING
a cláusula SQLite para especificar a condição de pesquisa para grupos.