
In reporting queries, you often need to summarize rows first and then decide which summarized groups should appear in the result. This is a common source of confusion in PostgreSQL interviews.
Explain the difference between GROUP BY and HAVING using a practical scenario. You should describe what each clause does, when each is evaluated, and why HAVING is not the same as WHERE. Use a simple reporting example such as finding Coforge order categories with more than a certain number of orders or total revenue above a threshold.
Keep your answer focused on single-table aggregation. A strong answer should define both clauses clearly, show a short PostgreSQL example, and explain why WHERE filters rows before grouping while HAVING filters groups after aggregation.