Фильтр по сумме покупок перенесли из HAVING в WHERE
Нужен список клиентов, у которых суммарные покупки за 2025 год превысили 10000.
SELECT client_id, SUM(amount) AS total
FROM purchases
WHERE dt >= '2025-01-01'
GROUP BY client_id
HAVING SUM(amount) > 10000
Коллега говорит, что HAVING тормозит, и переписывает запрос так:
SELECT client_id, SUM(amount) AS total
FROM purchases
WHERE dt >= '2025-01-01' AND amount > 10000
GROUP BY client_id
Чем результат второго запроса отличается от первого?
- Результат получится тот же самый, но запрос выполнится быстрее: фильтр применяется до группировки, а не после неё
- Останутся клиенты хотя бы с одной крупной покупкой, а total будет считаться только по таким покупкам
- Запрос вернёт те же строки, но total окажется меньше ровно на 10000 у каждого клиента
- Запрос завершится с ошибкой: в WHERE нельзя ссылаться на поле, по которому дальше идёт агрегация в SELECT
