SQL HAVING
SQL HAVING is a clause that is used in conjunction with the GROUP BY clause to filter the results of a query based on aggregate values.
The HAVING clause allows you to specify a condition that must be met by a group of rows after they have been grouped by the GROUP BY clause. This is different from the WHERE clause, which filters the rows before they are grouped.
The basic syntax of a SQL query with a HAVING clause is as follows:
SELECT column1, column2, aggregate_function(column3) FROM table GROUP BY column1, column2 HAVING condition;
Here, column1
, column2
, and so on are the columns that you want to group by, aggregate_function
is a function that you want to apply to a column (e.g., COUNT, SUM, AVG), condition
is the condition that you want to apply to the grouped rows after the aggregation is performed.
For example, the following SQL query uses the HAVING clause to filter the results of a query based on the average unit price of products:
SELECT category_id, AVG(unit_price) AS avg_price FROM products GROUP BY category_id HAVING AVG(unit_price) > 50;
In this example, the query calculates the average unit price for each category of products and returns only the categories where the average unit price is greater than 50.
It's important to note that the HAVING clause can only be used in conjunction with the GROUP BY clause, and it is applied after the data has been grouped. If you want to filter the data before it is grouped, you should use the WHERE clause instead.