Resumen :en este tutorial, aprenderá a usar SQLite HAVING
cláusula para especificar una condición de filtro para un grupo o un agregado.
Introducción a SQLite HAVING
cláusula
SQLite HAVING
cláusula es una cláusula opcional de SELECT
declaración. El HAVING
cláusula especifica una condición de búsqueda para un grupo.
A menudo usas el HAVING
cláusula con GROUP BY
cláusula. El GROUP BY
La cláusula agrupa un conjunto de filas en un conjunto de filas o grupos de resumen. Entonces el HAVING
La cláusula filtra grupos en función de una condición específica.
Si usa el HAVING
cláusula, debe incluir el GROUP BY
cláusula; de lo contrario, recibirá el siguiente error:
Error: a GROUP BY clause is required before HAVING
Code language: JavaScript (javascript)
Tenga en cuenta que HAVING
la cláusula se aplica después de GROUP BY
cláusula, mientras que WHERE
la cláusula se aplica antes de GROUP BY
cláusula.
Lo siguiente ilustra la sintaxis de HAVING
cláusula:
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)
En esta sintaxis, HAVING
cláusula evalúa la search_condition
para cada grupo como una expresión booleana. Solo incluye un grupo en el conjunto de resultados final si la evaluación es verdadera.
SQLite HAVING
ejemplos de cláusulas
Usaremos las tracks
tabla en la base de datos de muestra para demostración.
Para encontrar el número de pistas de cada álbum, utiliza GROUP BY
cláusula de la siguiente manera:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Pruébalo
Para encontrar los números de pistas para el álbum con id 1, agregamos un HAVING
cláusula a la siguiente declaración:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Pruébalo
Nos hemos referido al AlbumId
columna en el HAVING
cláusula.
Para encontrar álbumes que tengan un número de pistas entre 18 y 20, utilice la función de agregación en HAVING
cláusula como se muestra en la siguiente declaración:
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)
Pruébalo
SQLite HAVING
cláusula con INNER JOIN
ejemplo
La siguiente declaración consulta datos de tracks
y albums
tablas que utilizan unión interna para buscar álbumes que tengan una duración total superior a 60 000 000 milisegundos.
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)
Pruébalo
En este tutorial, ha aprendido a usar SQLite HAVING
cláusula para especificar la condición de búsqueda para grupos.