Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Кара Пака Ученик (41), закрыт 12 месяцев назад
Лучший ответ
Андрей Высший разум (466198) 1 год назад
Секция WHERE работает на этапе выборки данных - ДО группировки и вычисления агрегатных функций. Использовать агрегатные функции (SUM, COUNT, MAX и т.д.) в WHERE нельзя.

Секция HAVING работает ПОСЛЕ группировки и вычисления агрегатных функций. И предназначена, прежде всего, для фильтрации результатов по значениям агрегатных функций.

Если условие выборки: table.field > 3 - это WHERE.
А если условие: AVG(table.field) > 3 - это HAVING.
Остальные ответы
Dlazder Мудрец (17172) 1 год назад
having применяется позже where. В больших бд рекомендуется использовать where, так как ты сразу отсекаешь ненужные данные условием, а не обрабатываешь их, чтобы потом обрезать в конце.
Давид Мейстер Мастер (2089) 1 год назад
В SQL, языке структурированных запросов, WHERE и HAVING - это два ключевых оператора, используемых для фильтрации данных. Они различаются в том, как они применяются к запросам, особенно при использовании агрегатных функций, таких как SUM, COUNT, AVG и других.

Оператор WHERE применяется к строкам до группировки данных с помощью оператора GROUP BY. Он фильтрует строки на основе условий, указанных в предложении WHERE.
Например:
 SELECT department, COUNT(*) as employee_count  
FROM employees
WHERE salary > 50000
GROUP BY department;

Здесь оператор WHERE применяется до группировки по отделам и фильтрует только те записи, где зарплата превышает 50000.

С другой стороны, оператор HAVING применяется после группировки данных. Он фильтрует результаты группировки на основе условий агрегатных функций.
Например:
 SELECT department, AVG(salary) as avg_salary  
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;
Здесь оператор HAVING применяется после группировки по отделам и фильтрует только те отделы, где средняя зарплата превышает 60000.

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