4 ms·
But pre- and post- aggregation filtering is not really "the same" operation.
by andy800 2y ago
But pre- and post- aggregation filtering is not really "the same" operation.
- 0cf8612b2e1e 2y agoIf I use a CTE and filter the aggregate, feels the same to me.
- andy800 2y agoIf you perform an aggregation query in a CTE, then filter on that in a subsequent query, that is different, because you have also added another SELECT and FROM. You would use WHERE in that case whether using a CTE or just an outer query on an inner subquery. HAVING is different from WHERE because it filters after the aggregation, without requiring a separate query with an extra SELECT.
- RaftPeople 2y ago> HAVING is different from WHERE because it filters after the aggregation, without requiring a separate query with an extra SELECT. Personally I rarely use HAVING and instead use WHERE with subqueries for the following reasons: 1-I don't like repeating/duplicating a bunch of complex calcs, easier to just do WHERE in outer query on result 2-I typically have outer queries anyway for multiple reasons: break logic into reasonable chunks for humans, also for join+performance reasons (to give the optimizer a better chance at not getting confused)
- sgarland 2y agoThe main (only?) task I routinely use HAVING for is finding duplicates.