The difference is that WHERE operates on individual rows, while HAVING operates on groups.
You can have WHERE without HAVING, you can have HAVING without WHERE, you can have both WHERE and HAVING, and you can have neither WHERE nor HAVING. But you can't have HAVING without grouping, even if the group consists of the entire result set.
| ||||||||||||||||||||||||||||||
In SQL, the having clause and the group by statement work together when using aggregate functions like SUM, AVG, MAX, etc. This is best illustrated by an example. Suppose we have a table called emp_bonus as shown below. Note that the table hasmultiple entries for employees A and B.
If we want to calculate the total bonus that each employee received, then we would write a SQL statement like this:
select employee, sum(bonus) from emp_bonus group by employee;
The Group By Clause
In the SQL statement above, you can see that we use the "group by" clause with the employee column. The group by clause does allows us to find the sum of the bonuses for each employee. Using the ‘group by’ in combination with the ‘sum(bonus)’ statement will give us the sum of all the bonuses for employees A, B, and C.
Running the SQL above would return this:
|
Difference between having clause and group by statement
So, from the example, we can see that the group by clause is used to group column(s) so that aggregates (like SUM, MAX, etc) can be used to find the necessary information. The having clause is used with the group by clause when comparisons need to be made with those aggregate functions (like “> 1,000″). So, the having clause and group by statements are not really alternatives to each other – but they are used alongside one another!
Nice blog. Thanks for your information.
ReplyDeleteJava and J2EE training in Chennai
Good explanation about the difference between the having clause and the group clause, a group by statment, i think this blog topics very helpful to beginners. ONLINE TALEND TRAINING
ReplyDeleteNice blog its very nice article you given very great comparison thanks for sharing.
ReplyDeleteTalend Training
Talend Online Training