SQL HAVING Clause
The HAVING clause was added to SQL because the WHERE keyword could not be used with aggregate functions.
Syntax:-
Example:- We are using SQL SERVER. So, first we create two tables name are tblEmployees and tblSalarys and insert some as shown in below.
tblEmployee table:-
tblSalary table:-
Now, we are using HAVING and get output as shown in below.
Syntax:-
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value
Example:- We are using SQL SERVER. So, first we create two tables name are tblEmployees and tblSalarys and insert some as shown in below.
CREATE TABLE tblEmployees ( EmpID INT PRIMARY KEY,EmpName VARCHAR(100),Address varchar(200),MobileNo bigint,Email NVARCHAR(200) ) INSERT INTO tblEmployees VALUES(1001,'Santosh kumar singh','A-13',87878,'sa@gmail.com') INSERT INTO tblEmployees VALUES(1002,'Manorma arya','T-13,Bihar',83878,'ma@gmail.com') INSERT INTO tblEmployees VALUES(1003,'Pooja','G-13',84878,'p@gmail.com') INSERT INTO tblEmployees VALUES(1004,'Arun kumar','U-13,New Delhi',77878,'a@gmail.com') INSERT INTO tblEmployees VALUES(1005,'Sourab kumar','D-89,Bihar',9878,'su@gmail.com') INSERT INTO tblEmployees VALUES(1006,'Suneeta','U-13,New Delhi',74878,'sut@gmail.com') CREATE TABLE tblSalarys ( SalaryId int PRIMARY KEY,Salary int,SalaryDate varchar(50) ,EmpId int FOREIGN KEY REFERENCES tblEmployees(EmpId) ) INSERT INTO tblSalarys VALUES(1,10000,'1 Feb,2015',1001) INSERT INTO tblSalarys VALUES(2,9000,'1 Feb,2015',1003) INSERT INTO tblSalarys VALUES(3,8000,'3 March,2015',1002) INSERT INTO tblSalarys VALUES(4,10000,'1 March,2015',1001) INSERT INTO tblSalarys VALUES(5,12000,'1 Feb,2015',1004) INSERT INTO tblSalarys VALUES(6,10000,'5 April,2015',1001) INSERT INTO tblSalarys VALUES(7,8000,'1 Feb,2015',1006)
tblSalary table:-
Now, we are using HAVING and get output as shown in below.
SELECT e.EmpName AS Name,e.Email, COUNT(e.EmpID) AS TotalNumber FROM tblEmployees e INNER JOIN tblSalarys s ON e.EmpID=s.EmpId GROUP BY e.EmpName,e.Email HAVING COUNT(e.EmpID)>1