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

MySQL에서 GROUP BY와 COUNT(*)로 값별 발생 횟수 집계하는 방법

MySQL에서 레코드별 발생 횟수 세기

MySQL 테이블에 저장된 각 값이 몇 번 등장했는지 확인하고 싶다면 COUNT(*) 함수와 GROUP BY 절을 함께 사용하면 됩니다. GROUP BY는 동일한 값을 가진 행들을 하나의 그룹으로 묶어주고, COUNT(*)는 각 그룹에 속한 행의 개수를 세어 결과를 별도의 열로 출력해 줍니다.

실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성하기

먼저 실습에 사용할 테이블을 만듭니다.

mysql> create table DemoTable1942
    (
    Value int
    );
Query OK, 0 rows affected (0.00 sec)

2단계: 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 입력합니다. 일부러 중복된 값(1, 2, 3)을 넣어 발생 횟수를 확인할 수 있도록 했습니다.

mysql> insert into DemoTable1942 values(1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(1);
Query OK, 1 row affected (0.00 sec)

3단계: 전체 데이터 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select * from DemoTable1942;

실행하면 다음과 같은 결과가 출력됩니다.

+-------+
| Value |
+-------+
|     1 |
|     2 |
|     3 |
|     2 |
|     3 |
|     3 |
|     1 |
+-------+
7 rows in set (0.00 sec)

총 7개의 레코드가 있으며, 값 1은 2번, 값 2는 2번, 값 3은 3번 나타난 것을 눈으로 확인할 수 있습니다.

4단계: 발생 횟수 집계 쿼리 실행하기

이제 COUNT(*)와 GROUP BY를 조합하여 각 값의 발생 횟수를 계산합니다.

mysql> select Value, count(*) from DemoTable1942
    group by Value;

실행 결과는 다음과 같습니다.

+-------+----------+
| Value | count(*) |
+-------+----------+
|     1 |        2 |
|     2 |        2 |
|     3 |        3 |
+-------+----------+
3 rows in set (0.00 sec)

결과 해석

위 결과를 보면 Value 열에는 고유한 값들이 표시되고, 그 옆의 count(*) 열에는 해당 값이 테이블에 등장한 횟수가 새로운 열 형태로 나타납니다. 즉:

  • 1은 총 2번 등장했습니다.
  • 2는 총 2번 등장했습니다.
  • 3은 총 3번 등장했습니다.

이처럼 COUNT(*)와 GROUP BY 절만 활용하면 별도의 서브쿼리나 복잡한 로직 없이도 손쉽게 값별 빈도수를 집계할 수 있습니다. 참고로 결과 열 이름을 더 의미 있게 바꾸고 싶다면 count(*) AS 발생횟수처럼 별칭(Alias)을 지정하는 것도 좋은 방법입니다.