Когда я изучаю учебник по SQL HAVING, он говорит: HAVING - это «чистый» способ отфильтровать агрегированный запрос, но это также обычно делается с использованием подзапроса.
Иногда оператор HAVING эквивалентен подзапросу, например:
select account_id, sum(total_amt_usd) as sum_amount
from demo.orders
group by account_id
having sum(total_amt_usd) >= 250000
select *
from (
select account_id, sum(total_amt_usd) as sum_amount
from demo.orders
group by account_id
) as subtable
where sum_amount >= 250000
Я хочу знать, какой из них рекомендуется, и причину, по которой он быстрее или эффективнее другого.