НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
113 of 150 menu

Команда HAVING

Команда HAVING позволяет фильтровать результат группировки, сделанной с помощью команды GROUP BY.

Синтаксис

GROUP BY field HAVING condition

Таблицы для примеров

employees
id name age salary
1 user1 23 400
2 user2 25 500
3 user3 23 500
4 user4 30 900
5 user5 27 500
6 user6 28 900

Пример

Давайте продемонстрируем работу GROUP BY без условия HAVING при выборке из таблицы:

SELECT age, SUM(salary) AS sum FROM employees GROUP BY age

Результат выполнения кода:

age sum
23 900
25 500
27 500
28 900
30 900

Пример

Давайте теперь с помощью условия HAVING оставим только те строки, в которых суммарная зарплата больше или равна 900:

SELECT age, SUM(salary) AS sum FROM employees GROUP BY age HAVING SUM(salary) >= 900

Результат выполнения кода:

age sum
23 900
28 900
30 900

Пример

Давайте с помощью функции COUNT подсчитаем количество записей в группе, не используя HAVING:

SELECT age, COUNT(*) AS count FROM employees GROUP BY age

Результат выполнения кода:

age count
23 2
25 1
27 1
28 1
30 1

Пример

А теперь давайте с помощью условия HAVING оставим только те группы, в которых количество строк меньше или равно двум:

SELECT age, COUNT(*) AS count FROM employees GROUP BY age HAVING COUNT(*) <= 2

Результат выполнения кода:

age count
23 2
25 1
27 1
28 1
30 1

Пример

Давайте достигнем аналогичного эффекта, воспользовавшись командой IN:

SELECT age, COUNT(*) AS count FROM employees GROUP BY age HAVING COUNT(*) IN (1, 2)

Пример

Можно также использовать команду BETWEEN:

SELECT age, COUNT(*) AS count FROM employees GROUP BY age HAVING COUNT(*) BETWEEN 1 AND 2

Смотрите также

  • команду GROUP BY,
    которая группирует записи для последующей фильтрации
  • команду WHERE,
    которая фильтрует записи по условию
  • функцию COUNT,
    которая используется для подсчета записей
  • функцию SUM,
    которая вычисляет сумму значений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить