티스토리 뷰

안녕하세요. 오늘은 MySQL의 대표적인 집계함수에 대해서 포스팅하려고 합니다.

SQL은 데이터베이스라 불리는 '데이터의 집합'을 다루는 언어입니다. 이 같은 집합의 개수나 합계가 궁금하다면 SQL이 제공하는 집계함수를 사용하여 간단하게 구할 수 있습니다. 대표적인 집계 함수는 아래와 같습니다.

// 집계 함수 COUNT(집합)    // 행 개수 SUM(집합)      // 합계 AVG(집합)      // 평균 MIN(집합)      // 최소 값 MAX(집합)      // 최대 값


1. COUNT로 행 개수 구하기


COUNT 함수는 인수로 주어진 집합의 개수를 구해서 반환합니다. 기본적인 예를 통해 확인해보겠습니다. sample51테이블을 통해 알아볼 것이며 기본적으로 들어가 있는 데이터는 다음과 같습니다.



여기서 COUNT함수를 사용하여 행의 개수를 확인해보도록 하겠습니다. 인수로 '*'가 사용되었는데 이것은 '모든 열'을 나타냅니다.



DISTINCT를 사용해서 집계함수 내에서도 중복을 제거하고 결과 값을 받을 수 있습니다. 그럼 예제를 통해 알아보겠습니다.



위의 결과를 확인해보시면 name을 기준으로 행의 개수를 구하고 있는데 첫 번째 열은 중복을 제거하지 않은 전체 열을 개수를 반환해주고 두 번째 열인 DISTINCT를 적용한 열은 중복을 제거한 열의 개수를 반환해주는 것을 확인할 수 있습니다.


2. SUM으로 합계 구하기


SUM 함수는 집합의 합계를 구할 수 있습니다. 예들 들어 1, 2, 3이라는 세 개의 값을 가지는 집합이 있으면, SUM의 집계함수의 인수로 이 집합을 지정하면 1+2+3으로 계산되어서 6이라는 결과 값을 반환합니다. 그럼 간단한 예제를 통해 알아보겠습니다.


결과를 확인해보시면, 기존의 sample51테이블을 사용했고 quantity 열의 합을 구하여 1+2+10+3이 되어 16이라는 결과 값을 반환했습니다.


2. AVG로 평균내기

SUM 집계함수를 사용하여 합계를 구할 수 있습니다. 이때 합한 값을 개수로 나누면 평균 값을 구할 수 있는데 SUM(quantity) / COUNT(quantity) 가 아니더라도 AVG라는 함수를 사용해서 간단하게 평균 값을 구할 수 있습니다. 그럼 아래의 예제를 통해 확인해보겠습니다.


AVG 함수를 쓰거나 SUM/COUNT를 해서 나온 결과는 평균 값 4로 동일한 값이 나오는 것을 확인할 수 있습니다.


3. MIN, MAX로 최소값, 최대값 구하기


MIN 집계함수, MAX 집계함수를 사용해 집합에서 최소값과 최대값을 구할 수 있습니다. 이들 함수는 문자열형과 날짜시간형에도 사용할 수 있습니다. 아래의 예제를 통해 알아보겠습니다.


반환한 결과 값을 보시면 각각의 최소값과 최대값을 반환한 것을 확인해볼 수 있습니다.


※ 주의할 점


집계함수에서 문제는 NULL 값을 어떻게 취급하느냐 하는것입니다. 이전에도 언급했듯이 SQL에서는 NULL 값을 고려해주어야 합니다. 집계합수는 집합 안에 NULL 값이 있을 경우 이를 제외하고 처리합니다.


오늘은 간단한 집계함수의 종류 및 사용법에 대해서 알아보았고 포스팅을 마치도록 하겠습니다.