In the previous section, we discussed about
GROUP BY clause, however if you want to restrict the groups of returned rows, you can use
HAVING clause. The
HAVING clause is used to specify which individual group(s) is to be displayed, or in simple language we use the
HAVING clause in order to filter the groups on the basis of an aggregate function condition.
WHERE clause cannot be used to return the desired groups. The
WHERE clause is only used to restrict individual rows. When the
GROUP BY clause is not used, the
HAVING clause works like the
The syntax for the PostgreSQL
HAVING clause is as follows:
SELECT expression1, expression2, ... expression_n, aggregate_function (expression) FROM tables WHERE conditions GROUP BY expression1, expression2, ... expression_n HAVING group_condition;
aggregate_function can be a function such as
expression1, expression2, ... expression_n are expressions that are not encapsulated within an aggregate function and must be included in the
GROUP BY clause.
conditions are the conditions used to restrict the groups of returned rows. Only those groups whose condition evaluates to true will be included in the result set.
Let's consider an example where you try to fetch the product that has
SELECT product, SUM(sale) AS "Total sales" FROM order_details GROUP BY product Having sum(sales)>10000;
HAVING clause will filter the results so that only the total sales greater than
10000 will be returned.