SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite mit

Zusammenfassung :In diesem Tutorial lernen Sie, wie Sie SQLite HAVING verwenden -Klausel, um eine Filterbedingung für eine Gruppe oder ein Aggregat anzugeben.

Einführung in SQLite HAVING Klausel

SQLite HAVING -Klausel ist eine optionale Klausel von SELECT Erklärung. Das HAVING -Klausel gibt eine Suchbedingung für eine Gruppe an.

Du verwendest oft den HAVING -Klausel mit dem GROUP BY Klausel. Die GROUP BY -Klausel gruppiert einen Satz von Zeilen in einen Satz von Zusammenfassungszeilen oder -gruppen. Dann das HAVING -Klausel filtert Gruppen basierend auf einer bestimmten Bedingung.

Wenn Sie den HAVING verwenden -Klausel müssen Sie GROUP BY einschließen Klausel; andernfalls erhalten Sie die folgende Fehlermeldung:

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

Beachten Sie, dass HAVING -Klausel wird nach GROUP BY angewendet -Klausel, wohingegen die WHERE -Klausel wird vor GROUP BY angewendet Klausel.

Das Folgende veranschaulicht die Syntax des HAVING Klausel:

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 dieser Syntax ist das HAVING -Klausel wertet die search_condition aus für jede Gruppe als boolescher Ausdruck. Eine Gruppe wird nur dann in die endgültige Ergebnismenge aufgenommen, wenn die Bewertung wahr ist.

SQLite HAVING Klauselbeispiele

Wir werden die tracks verwenden Tabelle in der Beispieldatenbank zur Demonstration.

Um die Anzahl der Titel für jedes Album zu finden, verwenden Sie GROUP BY Klausel wie folgt:

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

Probieren Sie es aus

Um die Nummern der Titel für das Album mit der ID 1 zu finden, fügen wir einen HAVING hinzu Klausel der folgenden Anweisung:

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

Probieren Sie es aus

Wir haben auf die AlbumId verwiesen in der Spalte HAVING Klausel.

Um Alben zu finden, die eine Anzahl von Titeln zwischen 18 und 20 haben, verwenden Sie die Aggregatfunktion im HAVING Klausel wie in der folgenden Anweisung gezeigt:

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)

Probieren Sie es aus

SQLite HAVING -Klausel mit INNER JOIN Beispiel

Die folgende Anweisung fragt Daten von tracks ab und albums Tabellen, die Inner Join verwenden, um Alben mit einer Gesamtlänge von mehr als 60.000.000 Millisekunden zu finden.

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)

Probieren Sie es aus

In diesem Tutorial haben Sie gelernt, wie Sie HAVING von SQLite verwenden -Klausel zur Angabe der Suchbedingung für Gruppen.