sql >> Database >  >> RDS >> SQLite

SQLite hebben

Samenvatting :in deze tutorial leer je hoe je SQLite gebruikt HAVING clausule om een ​​filtervoorwaarde voor een groep of een aggregaat op te geven.

Inleiding tot SQLite HAVING clausule

SQLite HAVING clausule is een optionele clausule van de SELECT uitspraak. De HAVING clausule specificeert een zoekvoorwaarde voor een groep.

Je gebruikt vaak de HAVING clausule met de GROUP BY clausule. De GROUP BY clausule groepeert een set rijen in een set samenvattende rijen of groepen. Dan de HAVING clausule filtert groepen op basis van een opgegeven voorwaarde.

Als u de HAVING . gebruikt clausule, moet u de GROUP BY clausule; anders krijgt u de volgende foutmelding:

Error: a GROUP BY clause is required before HAVINGCode language: JavaScript (javascript)

Merk op dat de HAVING clausule wordt toegepast na GROUP BY clausule, terwijl de WHERE clausule wordt toegepast vóór de GROUP BY clausule.

Het volgende illustreert de syntaxis van de HAVING clausule:

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 deze syntaxis is de HAVING clausule evalueert de search_condition voor elke groep als een Booleaanse uitdrukking. Het bevat alleen een groep in de uiteindelijke resultatenset als de evaluatie waar is.

SQLite HAVING clausule voorbeelden

We gebruiken de tracks tabel in de voorbeelddatabase voor demonstratie.

Om het aantal nummers voor elk album te vinden, gebruik je GROUP BY clausule als volgt:

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Probeer het

Om het aantal nummers voor het album met id 1 te vinden, voegen we een HAVING . toe clausule naar de volgende verklaring:

SELECT
	albumid,
	COUNT(trackid)
FROM
	tracks
GROUP BY
	albumid
HAVING albumid = 1;

Probeer het

We hebben verwezen naar de AlbumId kolom in de HAVING clausule.

Om albums te vinden met een aantal nummers tussen 18 en 20, gebruikt u de aggregatiefunctie in de HAVING clausule zoals weergegeven in de volgende verklaring:

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)

Probeer het

SQLite HAVING clausule met INNER JOIN voorbeeld

De volgende instructie vraagt ​​om gegevens van tracks en albums tabellen die inner join gebruiken om albums te vinden met een totale lengte van meer dan 60.000.000 milliseconden.

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)

Probeer het

In deze tutorial heb je geleerd hoe je SQLite HAVING . gebruikt clausule om de zoekvoorwaarde voor groepen te specificeren.


  1. MySQL -- Joins tussen databases op verschillende servers met Python?

  2. kan geen automatisch oplopende primaire sleutel maken met flask-sqlalchemy

  3. Django uniek samen beperking falen?

  4. Genereer klasse uit databasetabel