В чем разница между HAVING и WHERE · PHP Backend — JobPilot

В чем разница между HAVING и WHERE

PHP Backend · 30%
Вопрос 9 / #
Пример ответа

1) Короткий ответ
WHERE фильтрует строки до группировки, а HAVING — после группировки, работая с результатами агрегатных функций.

4) Сравнение

Критерий

WHERE

HAVING

Время применения

До группировки (GROUP BY)

После группировки (GROUP BY)

Работа с агрегатами

Не может использовать агрегатные функции (SUM, COUNT)

Может фильтровать по результатам агрегатных функций

Производительность

Более эффективен, так как фильтрует данные раньше

Менее эффективен, так как фильтрует уже сгруппированные данные

Порядок в запросе

После FROM / JOIN

После GROUP BY

Рекомендация: Всегда используйте WHERE для фильтрации по отдельным строкам, и только когда нужна фильтрация по результатам группировки (GROUP BY) или агрегатным функциям — переходите на HAVING.

5) Пример SQL

sql

Copy

Download

-- Фильтрация по отдельным строкам ДО группировки
SELECT department, AVG(salary) as avg_salary
FROM employees
WHERE salary > 1000           -- Фильтруем строки до группировки
GROUP BY department;

-- Фильтрация ПОСЛЕ группировки по результату агрегатной функции
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;   -- Фильтруем после группировки

6) Follow-up вопросы

  • Можно ли использовать AND/OR в HAVING?Да, как в WHERE.

  • Что выполняется быстрее — WHERE или HAVING?WHERE, меньше данных.

7) Практический совет

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

  2. Проанализируйте свои SQL-запросы — если в HAVING есть условия, которые можно перенести в WHERE, сделайте это для улучшения производительности.

PHP Backend
Junior
30%
Навигация
Какие знаешь типы данных в PHP
Следующий: Есть ли у тебя вопросы
Предыдущий: Какие знаешь типы данных в PHP

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.