MariaDB group by 절을 사용하여 데이터를 그룹화하는 방법을 알아봅니다.
MariaDB group by 절 소개
group by 절은 결과의 행을 그룹으로 그룹화합니다.
다음은 group by 절의 구문을 보여줍니다.
select
select_list
from
table_name
group by
column1, column2,...;
group by는 요소 수(count), 총 값( sum), 최대 요소(max), 최소 요소(min) 및 요소의 평균(avg)을 구하는데 자주 사용되어 집니다.
다음은 집계 함수와 함께 사용되는 group by 절의 구문을 보여줍니다.
select
column1,
aggregate_function(column2)
from table_name
group by column1;
이 구문에서 group by 절은 행을 그룹으로 그룹화하고 집계 함수를 각 그룹에 적용하여 요약 행을 반환합니다.
MariaDB group by 절 예제
데모를 위해 nation 샘플 데이터베이스의 countries 및 regions 테이블을 사용합니다.
1) count() 함수 예제와 함께 MariaDB group by 절 사용
다음 문은 count() 함수와 함께 group by 절을 사용하여 각 지역의 국가 수를 가져옵니다.
select region_id, count(country_id)
from countries
group by region_id
order by region_id;
이 예에서:
- 먼저 group by 절은 국가를 지역별로 나눕니다.
- 그런 다음 각 지역에 count() 함수를 적용하여 국가 수를 반환합니다.
출력을 보다 의미 있게 만들려면 countries 테이블을 regions 테이블과 조인할 수 있습니다.
select regions.name, count(country_id) country_count
from countries
inner join regions using (region_id)
group by regions.name
order by regions.name;
2) sum() 함수와 함께 MariaDB group by 절 사용
다음 예에서는 sum() 함수와 함께 group by 절을 사용하여 각 지역에 있는 국가의 총 면적을 계산합니다.
select regions.name region, sum(area) region_area
from countries
inner join regions using (region_id)
group by regions.name
order by region_area desc;
3) min() 및 max() 함수와 함께 MariaDB group by 절 사용
다음 예에서는 min() 및 max() 함수와 함께 group by 절을 사용하여 각 지역에서 국가의 최소 및 최대 영역을 찾습니다.
select
regions.name region,
min(area) smallest_country_area,
max(area) largest_country_area
from countries
inner join regions using (region_id)
group by regions.name
order by regions.name;
4) avg() 함수와 함께 MariaDB group by 절 사용
다음 예에서는 avg() 함수와 함께 group by 절을 사용하여 각 지역에 있는 국가의 평균 면적을 계산합니다.
select
regions.name region,
avg(area) avg_area
from countries
inner join regions using (region_id)
group by regions.name
order by avg_area desc;
이상으로 MariaDB group by 절을 사용하여 데이터를 그룹화하는 방법을 알아봤습니다.
※ 원문출처 : https://www.mariadbtutorial.com/mariadb-basics/mariadb-group-by/
'MariaDB SQL' 카테고리의 다른 글
MariaDB Subqueries (0) | 2023.06.16 |
---|---|
MariaDB Having (0) | 2023.06.15 |
MariaDB Left Join (0) | 2023.06.13 |
MariaDB Inner Join (0) | 2023.06.08 |
MariaDB Join (0) | 2023.06.07 |