728x90
GROUP BY
MySQL에서 유형별로 개수를 가져오고 싶은데, COUNT함수로 데이터를 조회하면 전체 개수만을 가지고 온다.
유형별로 개수를 알고 싶을 때는 컬럼에 데이터를 그룹화할 수 있는 GROUP BY를 사용해야 한다.
GROUP BY를 사용할 때는 두가지를 기억해야 한다.
특정 컬럼을 그룹화하는 GROUP BY,
특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING.
※ WHERE과 HAVING을 헷갈리는 경우가 많은데 WHERE은 그룹화하기 전이고, HAVING은 그룹화 후의 조건이다.
사용법
컬럼 그룹화
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼;
조건 처리 후에 컬럼 그룹화
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼;
컬럼 그룹화 후 조건 처리
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼 HAVING 조건식;
조건 처리 후, 컬럼 그룹화 후 조건 처리
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼 HAVING 조건식;
ORDER BY가 있을 경우
SELECT 컬럼 FROM 테이블 [WHERE 조건식]
GROUP BY 그룹화할 컬럼 [HAVING 조건식] ORDER BY [컬럼1, 컬럼2, 컬럼3 ...];
Example Query
프로그래머스 - 고양이와 개는 몇 마리 있을까 [링크]
▼ 문제 설명 보기
쿼리문
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count FROM ANIMAL_INS
WHERE ANIMAL_TYPE = "Cat" OR ANIMAL_TYPE = "Dog"
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE;