SQL - Difference between Where and Having
The main difference between the WHERE and HAVING clauses in SQL lies in their usage and the data they filter.
1. Usage:
•WHERE: The WHERE clause is used in SELECT, UPDATE, DELETE, or INSERT statements to filter individual rows based on specified conditions. It operates on individual rows before any grouping or aggregation takes place.
•HAVING: The HAVING clause is used specifically with the GROUP BY clause to filter groups of data based on specified conditions. It operates on aggregated values after the grouping has occurred.
2. Data Filtered:
•WHERE: The WHERE clause filters individual rows based on conditions specified in the query. It can filter data on any column, including both aggregated and non-aggregated columns.
•HAVING: The HAVING clause filters groups of data based on conditions applied to aggregated values. It can only filter on aggregated columns or expressions derived from aggregated columns.
3. Placement:
•WHERE: The WHERE clause appears before the GROUP BY clause (if used) in a query. It filters rows before any grouping or aggregation is applied.
•HAVING: The HAVING clause appears after the GROUP BY clause in a query. It filters groups of data after the grouping and aggregation have occurred.
In summary, the WHERE clause filters individual rows based on specified conditions, while the HAVING clause filters groups of data based on conditions applied to aggregated values. The WHERE clause is used before any grouping or aggregation, whereas the HAVING clause is used after the grouping and aggregation have taken place.