разница между having и where

having используется чтобы ограничить выборку групп строк (сгруппированных строк) с помощью какого-то условия - причём это условие относится ко всей группе - при помощи оператора =

group by

where используется чтобы ограничить выборку строк , наложив условие на каждую строку в отдельности