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

MySQL에서 GROUP BY와 COUNT()로 중복(공통) 요소 개수 세기

MySQL에서 공통 요소 개수 세는 방법

테이블에 저장된 값들 중 같은 값이 몇 번 등장하는지, 즉 중복(공통) 요소의 개수를 확인하고 싶다면 COUNT() 함수와 GROUP BY 절을 함께 사용하면 됩니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

1. 테이블 생성하기

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Number int
    );
Query OK, 0 rows affected (0.20 sec)

위 쿼리는 자동 증가되는 기본키 Id와 정수형 Number 컬럼을 가진 테이블을 만듭니다.

2. 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다. 의도적으로 같은 숫자를 반복해서 넣어 중복 값을 만들어 두겠습니다.

mysql> insert into DemoTable(Number) values(10);
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Number) values(20);
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable(Number) values(20);
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable(Number) values(30);
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable(Number) values(10);
Query OK, 1 row affected (0.05 sec)

mysql> insert into DemoTable(Number) values(10);
Query OK, 1 row affected (0.04 sec)

3. 전체 레코드 조회하기

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

mysql> select *from DemoTable;

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

+----+--------+
| Id | Number |
+----+--------+
| 1  | 10     |
| 2  | 20     |
| 3  | 20     |
| 4  | 30     |
| 5  | 10     |
| 6  | 10     |
+----+--------+
6 rows in set (0.00 sec)

4. 공통 요소 개수 세는 쿼리

이제 각 숫자가 몇 번씩 등장했는지 세어 보겠습니다. GROUP BY Number로 값을 그룹화한 뒤, COUNT()로 그룹별 행 수를 집계합니다.

mysql> select Number,count(Number) as CommonElement from DemoTable group by Number;

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

+--------+---------------+
| Number | CommonElement |
+--------+---------------+
| 10     | 3             |
| 20     | 2             |
| 30     | 1             |
+--------+---------------+
3 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 다음과 같은 의미입니다.

  • 10은 3번 등장했습니다.
  • 20은 2번 등장했습니다.
  • 30은 1번만 등장했습니다.

이처럼 GROUP BY로 대상 컬럼을 그룹화하고 COUNT()로 집계하면, 특정 값이 테이블 내에서 몇 번 반복되는지 손쉽게 파악할 수 있습니다. 이 방법은 로그 분석, 카테고리별 통계, 인기 항목 집계 등 실무에서 매우 자주 활용되는 기본 패턴이니 꼭 익혀두시길 권장합니다.