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.