まず、SQLは以下の順番で実行される。
1.from
2.where
3.group by
4.having
5.select
6.order by
なので、havingは、group by後の結果に対して条件を指定することが出来る。
つまり、group byがなければ、whereとhavingは同じとなる。
以下の3つは同じ結果になる。
where
a.age = 30 and
a.kind = 1
;
having
a.age = 30 and
a.kind = 1
;
where
a.age = 30
having
a.kind = 1
;