[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sql-v-chem-razlichie-mezhdu-operatorami-having-i-where":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},893,"v-chem-razlichie-mezhdu-operatorami-having-i-where",25,"sql","SQL","🗃️","В чем различие между операторами HAVING и WHERE?","`WHERE` фильтрует строки до группировки и вычисления агрегатных функций, а `HAVING` фильтрует группы после группировки и агрегации. Это ключевое различие, определяющее, где какой оператор использовать.\n\n| Характеристика | WHERE | HAVING |\n|---------------|-------|--------|\n| Момент выполнения | До `GROUP BY` | После `GROUP BY` |\n| Работает с | Отдельными строками | Группами строк |\n| Агрегатные функции | Нельзя использовать | Можно и нужно использовать |\n| Без GROUP BY | Используется самостоятельно | Технически возможно, но бессмысленно |\n| Влияние на производительность | Уменьшает количество строк для группировки | Фильтрует уже вычисленные группы |\n\n```sql\n-- WHERE отбирает строки для агрегации\n-- HAVING фильтрует результаты агрегации\nSELECT department, COUNT(*) AS emp_count\nFROM employees\nWHERE status = 'active'          -- сначала: только активные сотрудники\nGROUP BY department\nHAVING COUNT(*) > 5;             -- потом: только отделы с более чем 5 активными\n```\n\nИз соображений производительности фильтрацию строк лучше выносить в `WHERE`, а не в `HAVING`. Предложение `WHERE` уменьшает количество данных, которые нужно группировать, что делает запрос быстрее.\n\n> **На собеседовании:** покажите, что понимаете порядок выполнения: `WHERE` -> `GROUP BY` -> `HAVING`. Частая ошибка — написать условие фильтрации по обычному столбцу в `HAVING` вместо `WHERE`, что работает, но медленнее.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"В чем различие между операторами HAVING и WHERE? — Gymterview","`WHERE` фильтрует строки до группировки и вычисления агрегатных функций, а `HAVING` фильтрует группы после группировки и агрегации. Это ключевое различие, опред","`WHERE` фильтрует строки до группировки и вычисления агрегатных функций, а `HAVING` фильтрует группы после группировки и",[7,13],"`WHERE` фильтрует строки до группировки и вычисления агрегатных функций, а `HAVING` фильтрует группы после группировки и агрегации. Это ключевое различие, определяющее, где какой оператор использовать.",true]