Copyright © tutorialspoint.com

# SQL - Having Clause

The HAVING clause enables you to specify conditions that filter which group results appear in the final results.

The WHERE clause places conditions on the selected columns, whereas the HAVING clause places conditions on groups created by the GROUP BY clause.

# Syntax:

The following is the position of the HAVING clause in a query:

    SELECT
    FROM
    WHERE
    GROUP BY
    HAVING
    ORDER BY

The HAVING clause must follow the GROUP BY clause in a query and must also precede the ORDER BY clause if used. The following is the syntax of the SELECT statement, including the HAVING clause:

    SELECT column1, column2
    FROM table1, table2
    WHERE [ conditions ]
    GROUP BY column1, column2
    HAVING [ conditions ]
    ORDER BY column1, column2

# Example:

Consider CUSTOMERS table is having following records:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

Following is the example which would display record for which similar age count would be more than or equal to 2:

    SQL > SELECT *
    FROM CUSTOMERS
    GROUP BY age
    HAVING COUNT(age) >= 2;

This would produce following result:

    +----+--------+-----+---------+---------+
    | ID | NAME   | AGE | ADDRESS | SALARY  |
    +----+--------+-----+---------+---------+
    |  2 | Khilan |  25 | Delhi   | 1500.00 |
    +----+--------+-----+---------+---------+

Copyright © tutorialspoint.com