Спросят с вероятностью 19%
WHERE и HAVING используются для фильтрации записей, но они применяются на разных этапах выполнения запроса и имеют разные цели.
WHERE
- Применяется до агрегации данных. Это значит, что фильтрация происходит непосредственно на строках исходной таблицы или результата объединения таблиц, до того как произойдет любая операция группировки (
GROUP BY) или агрегирования (SUM, COUNT, AVG и т.д.).- Используется для фильтрации строк, которые будут включены в результаты группировки или в финальный набор данных, если группировка не используется.
- Не может использоваться для фильтрации агрегированных значений.
SELECT employee_id, SUM(salary)
FROM salaries
WHERE salary > 1000
GROUP BY employee_id;
В этом примере он фильтрует строки, где зарплата больше 1000, до того, как произойдет агрегация данных по
employee_id.HAVING
- Применяется после агрегации данных. Это означает, что фильтрация происходит уже на агрегированных результатах, полученных после применения
GROUP BY и агрегатных функций.- Используется для фильтрации групп в результате запроса с группировкой.
- Может использоваться только с
GROUP BY или для фильтрации результатов, полученных с помощью агрегатных функций.SELECT employee_id, SUM(salary)
FROM salaries
GROUP BY employee_id
HAVING SUM(salary) > 10000;
В этом примере он фильтрует группы, где суммарная зарплата по
employee_id больше 10000, после того как данные были сгруппированы и агрегированы.Основные отличия
- Момент применения:
WHERE применяется до агрегации, HAVING — после.- Цель использования:
WHERE фильтрует строки, HAVING фильтрует группы или агрегированные значения.- Условия использования:
WHERE может использоваться в любом запросе, HAVING обычно используется с GROUP BY или для фильтрации агрегированных значений.Эти различия делают WHERE и HAVING специализированными инструментами для разных этапов и целей фильтрации данных.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых