sql >> Database teknologi >  >> RDS >> SQLite

SQLite have

Oversigt :i denne vejledning lærer du, hvordan du bruger SQLite HAVING klausul for at angive en filterbetingelse for en gruppe eller et aggregat.

Introduktion til SQLite HAVING klausul

SQLite HAVING klausul er en valgfri klausul af SELECT udmelding. HAVING klausul angiver en søgebetingelse for en gruppe.

Du bruger ofte koden HAVING klausul med GROUP BY klausul. GROUP BY klausul grupperer et sæt rækker i et sæt oversigtsrækker eller grupper. Derefter HAVING klausul filtrerer grupper baseret på en specificeret betingelse.

Hvis du bruger HAVING klausul, skal du inkludere GROUP BY klausul; ellers får du følgende fejlmeddelelse:

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

Bemærk, at HAVING klausul anvendes efter GROUP BY klausulen, hvorimod WHERE klausulen anvendes før GROUP BY klausul.

Det følgende illustrerer syntaksen for 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 denne syntaks er HAVING klausul evaluerer search_condition for hver gruppe som et boolesk udtryk. Den inkluderer kun en gruppe i det endelige resultatsæt, hvis evalueringen er sand.

SQLite HAVING klausuleksempler

Vi vil bruge tracks tabel i eksempeldatabasen til demonstration.

For at finde antallet af numre for hvert album, bruger du GROUP BY klausul som følger:

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

Prøv det

For at finde antallet af numre for albummet med id 1, tilføjer vi en HAVING klausul til følgende erklæring:

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

Prøv det

Vi har henvist til AlbumId kolonnen i HAVING klausul.

For at finde album, der har antallet af numre mellem 18 og 20, bruger du aggregatfunktionen i HAVING klausul som vist i følgende sætning:

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)

Prøv det

SQLite HAVING klausul med INNER JOIN eksempel

Følgende sætning forespørger data fra tracks og albums tabeller, der bruger indre sammenføjning til at finde album, der har en samlet længde på mere end 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)

Prøv det

I denne tutorial har du lært, hvordan du bruger SQLite HAVING klausul for at angive søgebetingelsen for grupper.


  1. Vælg værdier fra XML-feltet i SQL Server 2008

  2. Sådan krypterer du en opdelt database i Access 2016

  3. Hvordan kontrollerer man, om der findes en database i SQL Server?

  4. Kompilering af PL/Proxy med PostgresPlus Advance Server 9.1