sql >> Base de Datos >  >> RDS >> SQLite

tener SQLite

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.