In recent interview sessions in hiring process I asked this question to every prospect who said they know basic SQL. Surprisingly, none answered me correct. They knew lots of things in details but not this simple one. One prospect said he does not know cause it is not on this Blog. Well, here we are with same topic online.
Answer in one line is : HAVING specifies a search condition for a group or an aggregate function used in SELECT statement.
HAVING can be used only with the SELECT statement. HAVING is typically used in a GROUP BY clause. When GROUP BY is not used, HAVING behaves like a WHERE clause.
A HAVING clause is like a WHERE clause, but applies only to groups as a whole, whereas the WHERE clause applies to individual rows. A query can contain both a WHERE clause and a HAVING clause. The WHERE clause is applied first to the individual rows in the tables . Only the rows that meet the conditions in the WHERE clause are grouped. The HAVING clause is then applied to the rows in the result set. Only the groups that meet the HAVING conditions appear in the query output. You can apply a HAVING clause only to columns that also appear in the GROUP BY clause or in an aggregate function. (Reference :BOL)
Example of HAVING and WHERE in one query:
SELECT titles.pub_id, AVG(titles.price)
FROM titles INNERÂ JOIN publishers
ON titles.pub_id = publishers.pub_id
WHERE publishers.state = 'CA'
GROUPÂ BY titles.pub_id
HAVING AVG(titles.price)Â > 10
Sometimes you can specify the same set of rows using either a WHERE clause or a HAVING clause. In such cases, one method is not more or less efficient than the other. The optimizer always automatically analyzes each statement you enter and selects an efficient means of executing it. It is best to use the syntax that most clearly describes the desired result. In general, that means eliminating undesired rows in earlier clauses.
Reference : Pinal Dave (https://blog.sqlauthority.com)
123 Comments. Leave new
thanks a lot
Tanks a lot for this explanation
thanks sir , for a great explanation !
.
but can you explain , how sql query work , at machine level , please sir
Thank you sir it is very helpful
It is very helpfull thanks alot.
Thank you so much! This is my first visit to this blog. I’m in the middle of teaching myself SQL through using access. I’m sure this blog will be a valuable resource
hello
i would like to know about functions in sql server 2008.
Excellent. Nice explanation. Thanks a lot.
is their any coding difference in sql server 2005 and 2008?
There are some additional functions/features in 2008 which will malke the difference
great sir ..its really helpful…thanks..
1. Having works as filter on select result
2. We can not directly use function in where clause but can be use in Having
Great. Simple beautifully explained.
Good Explanation.i like it
quite helpful thanks ….
Great – Very Good Explanation
simple n sweetly explain sirjiii v good
Great explanation, its so clear now Thank you !
Nice Explanation
Thanks for such nice explanation.
nice explanation