GROUP BY는 특정 컬럼 이름을 지정해주면 그 컬럼의 UNIQUE한 값에 따라서 데이터를 그룹 짓고, 중복된 열은 제거된다.
GROUP BY는 보통 집계 함수(aggregate function)와 같이 쓰인다.
HAVING은 간단하게 생각해서 GROUP BY한 결과에 조건을 붙이고 싶을 때, 즉 GROUP BY의 WHERE절과 같다고 볼 수 있다.
WHERE절과 비슷하지만 HAVING은 그룹에 대한 집합의 행(집계 함수)에 적용된다는 것이 차이점이다.
SELECT STATUS, COUNT(*) FROM ORDER GROUP BY STATUS HAVING COUNT(*) >= 2;
출처: 여기