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

MySQL에서 동일한 값을 가진 행 개수 세는 방법 – COUNT(*)와 GROUP BY 완벽 정리

MySQL에서 같은 값을 가진 행의 개수 구하기

MySQL에서 특정 열에 동일한 값이 몇 번 반복되는지 확인하려면 COUNT(*) 함수와 GROUP BY 절을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.

SELECT yourColumName1, count(*) as anyVariableName FROM yourTableName GROUP BY yourColumName1;

이 문법이 실제로 어떻게 동작하는지 이해하기 위해, 먼저 예제 테이블을 만들어 보겠습니다.

1단계: 테이블 생성

아래 쿼리로 학생 정보를 저장할 테이블을 생성합니다.

mysql> create table RowWithSameValue
    -> (
    -> StudentId int,
    -> StudentName varchar(100),
    -> StudentMarks int
    -> );
Query OK, 0 rows affected (0.55 sec)

2단계: 동일한 값을 포함한 데이터 삽입

예제를 위해 일부러 여러 학생에게 같은 점수(89점)를 부여해 데이터를 삽입합니다.

mysql> insert into RowWithSameValue values(100,'Carol',89);
Query OK, 1 row affected (0.21 sec)

mysql> insert into RowWithSameValue values(101,'Sam',89);
Query OK, 1 row affected (0.15 sec)

mysql> insert into RowWithSameValue values(102,'John',99);
Query OK, 1 row affected (0.12 sec)

mysql> insert into RowWithSameValue values(103,'Johnson',89);
Query OK, 1 row affected (0.15 sec)

3단계: 전체 데이터 확인

삽입된 모든 레코드를 조회해 보겠습니다.

mysql> select * from RowWithSameValue;

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

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
|       100 | Carol       |           89 |
|       101 | Sam         |           89 |
|       102 | John        |           99 |
|       103 | Johnson     |           89 |
+-----------+-------------+--------------+
4 rows in set (0.00 sec)

테이블을 보면 89점인 학생이 3명(Carol, Sam, Johnson), 99점인 학생이 1명(John) 있는 것을 확인할 수 있습니다.

4단계: COUNT(*)와 GROUP BY로 중복 값 개수 집계

이제 앞서 소개한 문법을 적용해 동일한 점수를 가진 행이 몇 개인지 세어 보겠습니다.

mysql> SELECT StudentMarks, count(*) as SameValue FROM RowWithSameValue GROUP BY StudentMarks;

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

+--------------+-----------+
| StudentMarks | SameValue |
+--------------+-----------+
|           89 |         3 |
|           99 |         1 |
+--------------+-----------+
2 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 StudentMarks 열의 값별로 그룹화되어, 89점은 3개의 행, 99점은 1개의 행으로 집계된 것을 알 수 있습니다. 이처럼 GROUP BY로 대상 열을 묶고 COUNT(*)로 각 그룹의 행 수를 세면, 동일한 값을 가진 행의 개수를 손쉽게 파악할 수 있습니다.

이 방법은 점수뿐 아니라 이름, 카테고리, 상태 코드 등 어떤 열에도 응용할 수 있으며, 데이터 분석이나 중복 데이터 점검 시 매우 유용하게 활용됩니다.