테이블의 유형별로 개수를 가져오고자 한다. COUNT를 사용할 수 있지만 이 경우에는 전체 개수만을 가져오게 된다. 이렇게 유형별로 조회하고자 할 때 사용하는 것이 GROUP BY이다.
GROUP BYHAVING* WHERE은 그룹화 하기 전의 조건이고, HAVING은 그룹화한 후의 조건이다.
SELECT 필드 FROM 테이블 GROUP BY 그룹화할컬럼;
SELECT 필드 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할컬럼;
SELECT 필드 FROM 테이블 GROUP BY 그룹화할컬럼 HAVING 조건식;
SELECT 필드 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할컬럼 HAVING 조건식;
SELECT 필드 FROM 테이블 WHERE 조건식
GROUP BY 그룹화할컬럼 HAVING 조건식 ORDER BY 필드1, 필드2, 필드3, ...;

SELECT COUNTY, COUNT(NAME) AS CNT FROM FOOD GROUP BY COUNTRY;

SELECT COUNTY, COUNT(NAME) AS CNT FROM FOOD
WHERE COUNTRY LIKE "KOREAN"
GROUP BY COUNTRY;

SELECT COUNTY, COUNT(NAME) AS CNT FROM FOOD GROUP BY COUNTRY HAVING CNT > 2;

SELECT COUNTRY, COUNT(NAME) AS CNT FROM FOOD
WHERE COUNTRY LIKE "%ESE"
GROUP BY COUNTRY
HAVING CNT > 2;

SELECT COUNTRY, COUNT(NAME) AS CNT FROM FOOD
WHERE COUNTRY LIKE "%ESE"
GROUP BY COUNTRY
HAVING CNT > 2
ORDER BY COUNT DESC;
