Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL Server에서 평균(Mean)과 최빈값(Mode) 구하는 방법

문제 정의

평균(Mean)은 주어진 데이터 집합의 모든 값을 더한 뒤, 데이터 개수로 나누어 계산한 대푯값입니다.

최빈값(Mode)은 데이터 집합에서 가장 많이, 즉 가장 빈번하게 나타나는 값을 의미합니다.

평균 계산 예시

데이터 집합이 {1, 2, 3, 4}라면 평균은 다음과 같이 계산됩니다.

(1 + 2 + 3 + 4) / 4 = 2.5

최빈값 계산 예시

데이터 집합이 {1, 2, 3, 4, 1, 1, 1, 1}이라면 숫자 1이 총 5번 나타나므로 최빈값은 1입니다.

SQL Server 실습 예제

아래에서는 SQL Server에서 테이블을 만들고, 평균과 최빈값을 직접 조회하는 과정을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 숫자 값을 저장할 테이블을 생성합니다.

CREATE TABLE NUMBERS (
    value INT
)

2단계: 기본 데이터 삽입

생성한 테이블에 샘플 데이터를 입력합니다.

INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (2);
INSERT INTO NUMBERS VALUES (3);
INSERT INTO NUMBERS VALUES (4);

3단계: AVG 함수로 평균 구하기

SQL Server의 내장 집계 함수인 AVG()를 사용하면 간단하게 평균을 구할 수 있습니다.

SELECT AVG(value) FROM NUMBERS;

위 쿼리를 실행하면 {1, 2, 3, 4}의 평균인 2가 반환됩니다. 참고로 AVG 함수는 정수형 컬럼에 대해 정수 나눗셈을 수행하므로, 소수점까지 정확한 결과가 필요하다면 AVG(CAST(value AS FLOAT))처럼 형 변환을 사용하는 것이 좋습니다.

4단계: 최빈값 확인용 중복 데이터 삽입

최빈값을 확인하기 위해 특정 값(1)을 여러 번 추가로 삽입합니다.

INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (1);
INSERT INTO NUMBERS VALUES (1);

5단계: GROUP BY와 COUNT로 최빈값 구하기

SQL Server에는 최빈값을 바로 반환하는 내장 함수가 없기 때문에, GROUP BY로 값을 그룹화한 뒤 개수를 세고, 가장 많은 개수를 가진 값 하나만 추출하는 방식으로 구현합니다.

SELECT TOP 1 value
FROM NUMBERS
GROUP BY value
ORDER BY COUNT(*) DESC

이 쿼리의 동작 원리는 다음과 같습니다.

  • GROUP BY value: 동일한 값끼리 그룹으로 묶습니다.
  • COUNT(*): 각 그룹에 속한 행의 개수를 계산합니다.
  • ORDER BY COUNT(*) DESC: 개수가 많은 순서대로 내림차순 정렬합니다.
  • TOP 1: 정렬된 결과 중 가장 첫 번째 행, 즉 가장 자주 등장한 값 하나만 반환합니다.

위 예제에서는 숫자 1이 총 5번 저장되어 있으므로, 쿼리 실행 결과로 1이 반환됩니다.

정리

평균은 AVG() 함수 하나로 손쉽게 구할 수 있지만, 최빈값은 별도의 내장 함수가 없으므로 GROUP BY, COUNT(*), TOP을 조합한 쿼리로 직접 계산해야 합니다. 만약 최빈값이 여러 개 존재할 가능성이 있다면 TOP 1 WITH TIES를 사용하여 동률인 모든 값을 함께 조회할 수도 있습니다.