Study/DB

[MySQL] SELECT GROUP BY 기본 사용법 및 예제

 

데이터 조회할 때 GROUP BY 절을 사용하면 특정한 열이나 데이터를 기준으로 결과값을 그룹화할 수 있습니다.

그렇게 그룹화된 데이터를 기준으로 각종 통계값을 구할 수 있습니다.

 

기본 그룹 조회

특정 컬럼을 기준으로 묶어서 조회할 수 있습니다.

컬럼은 여러개 사용할 수 있습니다.

SELECT <컬럼명>, <그룹함수>
FROM <테이블명>
GROUP BY <컬럼명>

MySQL SELECT 그룹 조회

예제 데이터는 MySQL 샘플 데이터베이스인 world DB의 데이터를 사용하였습니다.

(MySQL 샘플 데이터베이스 다운로드 방법 참고)

 

MySQL 8버전을 사용했고, MySQL Workbench에서 실행하였습니다.

 

예시의 쿼리는 도시 테이블에서 국가 코드를 기준으로 그룹화하여 국가에 속한 도시가 몇 개인지 구하는 쿼리입니다.

count 뿐만 아니라 합계, 평균 등 여러 통계치를 구할 수 있습니다.

# 나라별 도시의 개수
select CountryCode, count(1)
from city
group by CountryCode;

# 국가별 인구의 총 합
select Code, Name, sum(Population)
from country
group by Code;

# 국가별 도시 인구 수의 평균
select CountryCode, avg(Population)
from city
group by CountryCode;

 

그 외에도 최대값(max), 최소값(min) 등 여러가지 집계 함수를 사용할 수 있습니다.

 

 

 

 

다양한 그룹 조회 방법

함수 사용

테이블에 있는 컬럼이 아니라도 임의의 계산 값이나 특정한 기준에 따라 그룹화할 수 있습니다.

# 인구가 100만이 넘는/넘지않는 도시의 개수
select if(Population >= 1000000, 'yes', 'no') as '인구수가 100만을 넘나요?', count(1)
from city
group by if(Population >= 1000000, 'yes', 'no');

SELECT GROUP BY절에 IF 함수 사용
SELECT GROUP BY절에 IF 함수 사용

GROUP BY 절에 IF 함수를 사용하여 도시의 인구가 100만이 넘는지 여부를 기준으로 그룹화하였습니다.

그룹화 할 수 있는 기준이 된다면 어떤 것도 사용이 가능합니다.

 

컬럼 여러개 사용

GROUP BY 절에 여러개의 컬럼을 사용할 수 있습니다.

# 국가의 구역에 도시가 몇 개 있는지 카운트
select CountryCode, District, count(1)
from city
group by CountryCode, District

SELECT GROUP BY 절에 여러 컬럼 사용
SELECT GROUP BY 절에 여러 컬럼 사용

 

GROUP BY 절은 이처럼 다양하게 활용이 가능합니다.

 

읽으면 좋은 글

[MySQL] GROUP BY 그룹 함수 종류 및 사용법

 

[MySQL] GROUP BY 그룹 함수 종류 및 사용법

종류 자주 사용되는 그룹 함수(집계 함수) 는 다음과 같습니다. 함수 설명 AVG() 평균 값을 반환합니다. COUNT() 행의 개수를 반환합니다. MAX() 최대값을 반환합니다. MIN() 최소값을 반환합니다. SUM()

priming.tistory.com

[MySQL] GROUP BY HAVING 사용법 및 예제

 

[MySQL] GROUP BY HAVING 사용법 및 예제

HAVING 절은 GROUP BY에 의해 생성된 그룹 데이터를 대상으로 조건을 적용할 수 있습니다. 사용법 기본 구조는 다음과 같습니다. SELECT [컬럼명] FROM [테이블명] WHERE [조건] GROUP BY [컬럼명] HAVING [조건]

priming.tistory.com

[MySQL] GROUP BY 와 ONLY_FULL_GROUP_BY

 

[MySQL] GROUP BY 와 ONLY_FULL_GROUP_BY

SELECT 구문에서 GROUP BY 절을 사용할 때 오류가 나는 경우가 있습니다. 전체 오류 메시지는 다음과 같습니다. Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'world.

priming.tistory.com