Online: 14664
To filter the result returned from the GROUP BY clause, we use HAVING clause. Remember that we can’t use WHERE clause to filter records with the GROUP BY clause.
SELECT
LastName,
SUM(NetSalary) AS NetSalary,
SUM(PPFDeduction) AS PPFDeduction
FROM viewPersonalAccounts
GROUP BY LastName
HAVING LastName = 'Narayan'
In the above statement, we have filtered the result of GROUP BY having LastName = ‘Narayan’.
Similarly, we can also filter by the SUM of either NetSalary or PPFDeduction.
Important
Only those fields are allowed in the HAVING clause that is the part of SELECT statement. If SELECT statement has Aggregate function with column names, HAVING clause must have that Aggregate functions with the column name.
Like, below statement will not work
SELECT
LastName,
SUM(NetSalary) AS NetSalary,
SUM(PPFDeduction) AS PPFDeduction
FROM viewPersonalAccounts
GROUP BY LastName
HAVING PPFDeduction > 10000
As the SELECT statement has SUM aggregate functions with the PPFDeduction but HAVING is directly trying to compare the value of PPFDeduction column. To solve this problem, we can have SUM function in the PPFDeduction column as well after HAVING clause.
Views: 13988 | Post Order: 52