sql >> Databasteknik >  >> RDS >> SQLite

SQLite har

Sammanfattning :i den här handledningen kommer du att lära dig hur du använder SQLite HAVING sats för att ange ett filtervillkor för en grupp eller ett aggregat.

Introduktion till SQLite HAVING klausul

SQLite HAVING sats är en valfri sats i SELECT påstående. HAVING sats anger ett sökvillkor för en grupp.

Du använder ofta HAVING sats med GROUP BY klausul. GROUP BY klausul grupperar en uppsättning rader till en uppsättning sammanfattningsrader eller grupper. Sedan HAVING klausul filtrerar grupper baserat på ett specificerat villkor.

Om du använder HAVING sats måste du inkludera GROUP BY klausul; annars får du följande felmeddelande:

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

Observera att HAVING sats tillämpas efter GROUP BY satsen, medan WHERE satsen tillämpas före GROUP BY klausul.

Följande illustrerar syntaxen för HAVING klausul:

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)

I den här syntaxen är HAVING satsen utvärderar search_condition för varje grupp som ett booleskt uttryck. Den inkluderar bara en grupp i den slutliga resultatuppsättningen om utvärderingen är sann.

SQLite HAVING klausulexempel

Vi kommer att använda tracks tabell i exempeldatabasen för demonstration.

För att hitta antalet spår för varje album använder du GROUP BY klausul enligt följande:

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

Prova det

För att hitta antalet spår för albumet med id 1 lägger vi till en HAVING klausul till följande uttalande:

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

Prova det

Vi har hänvisat till AlbumId kolumnen i HAVING klausul.

För att hitta album som har antalet spår mellan 18 och 20 använder du aggregatfunktionen i HAVING klausul som visas i följande uttalande:

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)

Prova det

SQLite HAVING klausul med INNER JOIN exempel

Följande sats frågar efter data från tracks och albums tabeller som använder inre koppling för att hitta album som har en total längd som är större än 60 000 000 millisekunder.

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)

Prova det

I den här handledningen har du lärt dig hur du använder SQLite HAVING sats för att ange sökvillkoret för grupper.


  1. Hur man kör SHOW LOCALES i MariaDB

  2. Vilka är BIN$...-tabellerna i Oracles ALL_TAB_COLUMNS-tabell?

  3. Hur man gör ett urval med array innehåller värdesats i psql

  4. villkorlig gå med i mysql