В этом учебном пособии вы узнаете, как использовать SQLite оператор HAVING с синтаксисом и примерами.
Описание
SQLite оператор HAVING используется в сочетании с GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чье условие TRUE.
Синтаксис
Синтаксис оператора HAVING в SQLite:
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
HAVING condition;
Параметры или аргументы
expression1, expression2, ... expression_n
Выражения, которые не заключены в агрегатную функцию и должны быть включены в оператор GROUP BY.
aggregate_function
Такие функции, как sum, count, min, max или avg.
aggregate_expression
Это столбец или выражение, для которого будет использоваться функция aggregate_function.
tables
Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Это условия для выбора записей.
HAVING condition
Это еще одно условие, применяемое только к агрегированным результатам, чтобы ограничить группы возвращаемых строк. Только те группы, состояние которых оценивается как true, будут включены в результирующий набор.
Пример - использование функции sum
Рассмотрим пример, который показывает, как использовать оператор HAVING с функцией sum в SQLite.
Вы можете использовать функцию sum, чтобы вернуть department и общую зарплату (для этого department). SQLite оператор HAVING будет фильтровать результаты, так что будут возвращены только department с общей зарплатой, превышающей 10000 $.
1 2 3 4 |
SELECT department, sum(salary) AS "Total salaries" FROM employees GROUP BY department HAVING sum(salary) > 10000; |
Пример - использование функции count
Рассмотрим, как использовать оператор HAVING с функцией count в SQLite.
Вы можете использовать функцию count, чтобы получить информацию об department и количестве сотрудников (для этого department), для которых в state указано 'Nevada'. SQLite HAVING будет фильтровать результаты, так что будут возвращены только department с более чем 20 сотрудниками в штате 'Nevada'.
1 2 3 4 5 |
SELECT department, count(*) AS "Number of employees" FROM employees WHERE state = 'Nevada' GROUP BY department HAVING COUNT(*) > 20; |
Пример - использование функции min
Теперь посмотрим, как использовать оператор HAVING с функцией min в SQLite.
Вы также можете использовать функцию min для возврата названия каждого department и минимальной зарплаты в department. SQLite оператор HAVING вернет только те department, где минимальная зарплата составляет менее 20000$.
1 2 3 4 |
SELECT department, min(salary) AS "Lowest salary" FROM employees GROUP BY department HAVING MIN(salary) < 20000; |
Пример - использование функции max
Наконец, давайте посмотрим, как использовать оператор HAVING с функцией max в SQLite.
Например, вы также можете использовать функцию max, чтобы вернуть название каждого department и максимальную зарплату в department, где для сайта favourite_web сотрудника указано 'Google.com'. SQLite HAVING будет возвращать только те department, чья максимальная зарплата больше или равна 30000$.
1 2 3 4 5 |
SELECT department, max(salary) AS "Highest salary" FROM employees WHERE favorite_website = 'Google.com' GROUP BY department HAVING MAX(salary) >= 30000; |