SQL
January 12, 2022
SQL: различие между операторами HAVING и WHERE
'WHERE': сначала выбирает строки -> группирует строки-> вычисляет агрегатные функции.
То есть, грубо говоря, с помощью 'WHERE' мы выбираем строки для вычисления агрегатов'HAVING': сначала группирует строки -> вычисляет агрегатные функции -> выбирает строки.
HAVINGиспользуется для фильтрации результатаGROUP BYпо заданным логическим условиям
- не должно содержать агрегатных функций
- не имеет смысла использовать агрегатные функции для определения строк для вычисления агрегатных функций
В то же время 'HAVING' можно написать без агрегатов, но скорее всего это будет бесполезно. То же самое условие может быть более эффективным на стадии 'WHERE'.