Встречается на собеседованиях • сегодня
В чем различие между where и having
Различие между `WHERE` и `HAVING` заключается в стадии выполнения запроса, на которой применяются эти условия, а также в их предназначении в контексте запросов.
WHERE
- Применяется для фильтрации строк перед тем, как будет выполнена группировка (`GROUP BY`). Это означает, что условие в `WHERE` используется для исключения строк из результата до того, как будут применены агрегатные функции или операция группировки.
- Не может использоваться с агрегатными функциями, такими как `COUNT()`, `SUM()`, `AVG()`, потому что в этот момент агрегация ещё не произведена.
HAVING
- Применяется после группировки данных с помощью `GROUP BY`. Это означает, что `HAVING` используется для фильтрации групп на основе агрегатных функций или условий, связанных с результатом группировки.
- Можно считать аналогом `WHERE`, но для фильтрации групп, а не отдельных строк.
Использование WHERE:
text
```sql
SELECT имя, SUM(зарплата)
FROM сотрудники
WHERE отдел = 'Продажи'
GROUP BY имя;
```Здесь `WHERE` фильтрует строки, так что в группировку и последующую агрегацию попадают только сотрудники отдела продаж.
Использование HAVING:
text
```sql
SELECT имя, SUM(зарплата)
FROM сотрудники
GROUP BY имя
HAVING SUM(зарплата) > 5000;
```В этом случае `HAVING` применяется после группировки по имени сотрудника и агрегации их зарплат, исключая из результата группы, где общая зарплата меньше или равна 5000.
- Используйте `WHERE`, если нужно отфильтровать строки перед агрегацией или группировкой.
- Используйте `HAVING`, если нужно отфильтровать группы после применения `GROUP BY` и агрегатных функций.
Это позволяет создавать гибкие и мощные запросы для анализа и отчетности в базах данных.
April 5, 2024, easyoffer
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
