Понимание разницы между предложениями WHERE и HAVING в SQL

В SQL и предложение WHERE, и предложение HAVING используются для фильтрации данных, но они используются в разных контекстах.

  1. Предложение WHERE:
    Предложение WHERE используется в запросах SQL для фильтрации строк на основе определенных условий. В основном он используется с операторами SELECT, UPDATE и DELETE. Вот некоторые ключевые моменты, касающиеся предложения WHERE:
  • Используется для фильтрации строк на основе значений столбца.
  • Он работает с отдельными строками до того, как произойдет группировка и агрегирование.
  • Его можно использовать с операторами сравнения, такими как “=”, “<>“, “<", ">“, “<=", ">=” и т. д., а также с логическими операторами, такими как AND, ИЛИ и НЕТ.
  • Предложение WHERE может фильтровать данные на основе одного или нескольких условий.

Пример:
ВЫБРАТЬ * ИЗ сотрудников ГДЕ зарплата >50000;

В приведенном выше примере будут возвращены только строки с зарплатой более 50 000.

  1. Предложение HAVING:
    Предложение HAVING используется в запросах SQL для фильтрации строк на основе условий после группировки и агрегирования данных. В основном он используется с предложением GROUP BY. Вот некоторые ключевые моменты, касающиеся предложения HAVING:
  • Он используется для фильтрации сгруппированных данных на основе агрегатных функций, таких как SUM, COUNT, AVG и т. д.
  • Он работает с группами строк после группировки и агрегирования.
  • Его можно использовать с агрегатными функциями и операторами сравнения.
  • Предложение HAVING может фильтровать группы на основе одного или нескольких условий.

Пример:
ВЫБЕРИТЕ город, COUNT() как total_employees FROM сотрудников GROUP BY city HAVING COUNT() >5;

В приведенном выше примере будут возвращены только группы (города) с числом сотрудников более пяти.

Подводя итог: предложение WHERE используется для фильтрации строк перед группировкой и агрегированием, а предложение HAVING используется для фильтрации групп на основе агрегатных функций после группировки и агрегирования.