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(*)로 각 그룹의 행 수를 세면, 동일한 값을 가진 행의 개수를 손쉽게 파악할 수 있습니다.
이 방법은 점수뿐 아니라 이름, 카테고리, 상태 코드 등 어떤 열에도 응용할 수 있으며, 데이터 분석이나 중복 데이터 점검 시 매우 유용하게 활용됩니다.