Резюме :в този урок ще научите как да използвате SQLite HAVING клауза за определяне на условие за филтриране за група или агрегат.
Въведение в SQLite HAVING клауза
SQLite HAVING клаузата е незадължителна клауза на SELECT изявление. HAVING клаузата определя условие за търсене за група.
Често използвате HAVING клауза с GROUP BY клауза. GROUP BY клауза групира набор от редове в набор от обобщени редове или групи. След това HAVING клаузата филтрира групи въз основа на определено условие.
Ако използвате HAVING клауза, трябва да включите GROUP BY клауза; в противен случай ще получите следната грешка:
Error: a GROUP BY clause is required before HAVINGCode language: JavaScript (javascript)
Имайте предвид, че HAVING клаузата се прилага след GROUP BY клауза, докато WHERE Клаузата се прилага преди GROUP BY клауза.
Следното илюстрира синтаксиса на HAVING клауза:
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)
В този синтаксис, HAVING клауза оценява search_condition за всяка група като булев израз. Включва група в крайния набор от резултати само ако оценката е вярна.
SQLite HAVING примери за клаузи
Ще използваме tracks таблица в примерната база данни за демонстрация.
За да намерите броя на песните за всеки албум, използвате GROUP BY клауза, както следва:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Опитайте го
За да намерим номерата на песните за албума с идентификатор 1, добавяме HAVING клауза към следното изявление:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1; Опитайте го
Позовахме се на AlbumId колона в HAVING клауза.
За да намерите албуми, които имат брой песни между 18 и 20, използвате функцията за обобщаване в HAVING клауза, както е показано в следното изявление:
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) Опитайте го
SQLite HAVING клауза с INNER JOIN пример
Следният израз изисква данни от tracks и albums таблици, използващи вътрешно свързване, за да намерите албуми с обща дължина по-голяма от 60 000 000 милисекунди.
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) Опитайте го
В този урок научихте как да използвате SQLite HAVING клауза за определяне на условията за търсене на групи.