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