Резюме :в този урок ще научите как да използвате 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 HAVING
Code 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
клауза за определяне на условията за търсене на групи.