Difference between Where and Having Clause in SQL

1. WHERE Clause:
WHERE Clause is used to filter the records from the table or used while joining more than one table.Only those records will be extracted who are satisfying the specified condition in WHERE clause. It can be used with SELECT, UPDATE, DELETE statements.

Let us consider below table “Student”

Roll_no       S_Name      Age

1                a             17

2                b             20

3                c             21

4                d             18

5                e             20

6                f             17

7                g             21

8                h             17 

Consider the Query:

SELECT S_Name, Age FROM Student 
WHERE Age >=18

OUTPUT of above query is :

 S_Name      Age

b             20             

c             21             

d             18             

e             20             

g             21             



2. HAVING Clause:
HAVING Clause is used to filter the records from the groups based on the given condition in the HAVING Clause. Those groups who will satisfy the given condition will appear in the final result. HAVING Clause can only be used
with SELECT statement.



Let us consider Student table mentioned above and apply having clause on it:

SELECT Age, COUNT(Roll_No) AS No_of_Students 
FROM Student GROUP BY Age
HAVING COUNT(Roll_No) > 1 

OUTPUT of the baove query is :

Age     No_of_Students

17              3

20              2

21              1 

Difference between Where and Having Clause in SQL :

SR.NO. WHERE Clause HAVING Clause
1. WHERE Clause is used to filter the records from the table based on the specified condition. HAVING Clause is used to filter record from the groups based on the specified condition.
2. WHERE Clause can be used without GROUP BY Clause HAVING Clause cannot be used without GROUP BY Clause
3. WHERE Clause implements in row operations HAVING Clause implements in column operation
4. WHERE Clause cannot contain aggregate function HAVING Clause can contain aggregate function
5. WHERE Clause can be used with SELECT, UPDATE, DELETE statement. HAVING Clause can only be used with SELECT statement.
6. WHERE Clause is used before GROUP BY Clause HAVING Clause is used after GROUP BY Clause
7. WHERE Clause is used with single row function like UPPER, LOWER etc. HAVING Clause is used with multiple row function like SUM, COUNT etc.

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.