본문 바로가기
MySQL/Aggregation&Subquery 다루기

[Aggregation&Subquery] 2. SUM(), AVG(), MIN(), MAX()로 집계하기

by Fletcher 2024. 8. 7.

 

반갑습니다!

저번 포스트에서 집계 함수 중에서 COUNT() 함수를 제일 먼저 살펴봤습니다

이번 포스트에서는 나머지 함수들에 대해서 알아보겠습니다

 

 

이번 포스트에서 사용할 샘플 데이터 셋도 저번과 동일하게

customers 테이블과 orders 테이블입니다

참고 자료로 파일 업로드합니다 ^^

customers.sql
0.01MB
orders.sql
0.06MB

 

 

 

 

 

 

 

 

customers 테이블과 orders 테이블을 JOIN 연산을 통해 합쳐서 조회하였습니다

한 유저가 두 개 이상의 주문 정보를 가지고 있죠? ^^

여기서 amount 값을 유저별로 한 번 합산을 해볼까요?

 

 

 

 

 

 

 

1. SUM() 함수

 

GROUP BY를 통해서 특정 컬럼을 기준으로 그룹화를 적용시켰습니다

그리고 SUM() 함수를 이용해서 amount 값을 합산을 해서 새로운 컬럼으로 조회를 했는데요

customers 테이블의 id 값이 1인 Quintin Whelpton이란 소비자는

amount의 총합이 4642.88이나 되네요 ^^

 

이와 같이 SUM() 함수를 사용하면 손쉽게 데이터의 합산 값을 구할 수 있습니다!

 

 

 

 

 

 

 

 

2. AVG() 함수

 

아까는 amount 값들에 대해서 SUM() 함수를 사용해 합산을 구했었죠

이번에는 AVG() 함수를 이용해서 amount 값들에 대해 평균값을 계산했습니다 ^^

이와 같이 avg() 함수를 사용하시면 데이터들에 대한 평균값을 손쉽게 집계할 수 있습니다!

 

 

 

 

 

 

 

 

3. MIN() 함수

 

GROUP BY를 적용한 상태에서는 눈에 보이지 않지만,

특정 컬럼의 값을 기준으로 그룹화가 적용되어 있기 때문에 중복 데이터들이 살아있습니다

그래서 아까 전체 조회를 했을 때 동일한 유저에 대해서

서로 다른 두 개 이상의 주문 정보들이 나열되었죠?

 

그러므로 amount 컬럼에 대해서 MIN() 함수를 적용하면

동일 유저에 대한 여러 amount 값들 중에서 가장 작은 값을 출력합니다

id값이 1인 유저의 주문 정보 중 amount 값이 가장 적은 값은 154.62였네요 ^^

 

 

 

 

이번엔 그룹화를 하지 않고 전체 데이터 중에서 제일 적은 값은 무엇일까요?

조회를 해보니 37.93이 나왔습니다

ORDER BY 로 오름차순 정렬을 해서 한 번 확인해볼까요?

 

 

 

 

ORDER BY 키워드를 이용해서 오름차순 정렬을 적용하니

amount 값 중 가장 적은 값이 37.93임을 확인할 수 있겠습니다 ^^!

 

 

 

 

 

 

4. MAX() 함수

 

MAX() 함수도 마찬가지로,

GROUP BY 키워드를 적용한 결과에 대해서 먼저 집계해보겠습니다 ^^

 

아까와 마찬가지로, 동일한 id 값에 대해 그룹화가 적용되어 있다보니

눈에는 보이지 않지만 동일한 유저에 대해 여러 주문 정보가 그룹으로 묶여서 살아있습니다

그 주문 정보들의 amount 값들 중 가장 큰 값을 조회해보면 각각 상기 이미지와 같이 조회할 수 있습니다 ^^!

 

id값이 1인 유저에 대해서 주문 정보 중 amount 값이 가장 큰 것은 803.85라고 집계되었네요

 

 

 

 

이번에는 전체 데이터에 대해서 적용해보겠습니다 ^^

 

MAX() 함수를 이용하여 amount 컬럼의 값들 중

가장 큰 값은 무엇인지 집계를 해보니 826.71이라는 값이 나왔습니다 ^^!

 

옳은 연산 결과인지 확인을 한 번 해볼까요?

 

 

 

 

ORDER BY 키워드를 이용해 내림차순으로 전체 데이터를 정렬 해보니

826.71이 제일 큰 값임을 확인할 수 있겠습니다 ^^

 

 

 

 

 

이번 포스트에서는 SUM(), AVG(), MIN(), MAX() 등의

기본적인 집계 함수들에 대해서 살펴보았습니다 ^^

 

다음 포스트에서는 GROUP BY와 HAVING 키워드에 대해서 알아보겠는데요

설명상 예시 제시의 용이성을 위해

이전 포스트부터 이미 적용해서 사용하고 있는 키워드이지만

아직 설명을 드린적은 없었죠 ^^;;

 

포스트 읽어주셔서 감사드리고 다음 포스트에서 찾아뵙겠습니다!