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

MySQL에서 열의 고유 레코드 개수 세는 방법 – COUNT(DISTINCT)와 GROUP BY 완벽 정리

MySQL에서 열의 고유 레코드 개수 구하기

MySQL에서 특정 열의 고유(중복 제거) 레코드 개수를 계산하려면 집계 함수 COUNT(*)GROUP BY 절을 함께 사용하면 됩니다. 이때 중복 값을 제거하려면 COUNT(DISTINCT 컬럼명) 형태로 작성하는 것이 핵심입니다.

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

mysql> create table DemoTable
(
   UserName varchar(100),
   UserPostMessage text
);
Query OK, 0 rows affected (0.54 sec)

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('Chris','Hi');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David','Hello');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Chris','Awesome');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Chris','Amazing');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('David','Nice Place');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Chris','Amazing');
Query OK, 1 row affected (0.12 sec)

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----------+-----------------+
| UserName | UserPostMessage |
+----------+-----------------+
| Chris    | Hi              |
| David    | Hello           |
| Chris    | Awesome         |
| Chris    | Amazing         |
| David    | Nice Place      |
| Chris    | Amazing         |
+----------+-----------------+
6 rows in set (0.00 sec)

사용자별 고유 메시지 수를 계산하는 쿼리

이제 MySQL 데이터베이스에서 열의 고유 레코드를 집계하는 실제 쿼리를 살펴보겠습니다.

mysql> select UserName,count(DISTINCT UserPostMessage) AS NumberOfMessagesPostByUser from DemoTable group by UserName;

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

+----------+----------------------------+
| UserName | NumberOfMessagesPostByUser |
+----------+----------------------------+
| Chris    |                          3 |
| David    |                          2 |
+----------+----------------------------+
2 rows in set (0.00 sec)

쿼리 상세 설명

  • COUNT(DISTINCT UserPostMessage): UserPostMessage 열에서 중복된 값을 제거한 뒤 개수를 계산합니다.
  • GROUP BY UserName: 사용자 이름별로 데이터를 그룹화하여 각 사용자마다 고유 메시지 수를 개별적으로 집계합니다.
  • AS NumberOfMessagesPostByUser: 결과 열에 별칭을 지정해 가독성을 높입니다.

결과를 해석해 보면, Chris는 'Amazing'이라는 동일한 메시지를 두 번 게시했기 때문에 전체 게시물은 4개지만 고유한 메시지는 3개로 집계됩니다. 반면 David는 서로 다른 메시지만 작성했으므로 2개로 계산됩니다. 이처럼 COUNT(DISTINCT)GROUP BY를 조합하면 중복 데이터를 손쉽게 걸러내고 그룹별 통계를 정확하게 얻을 수 있습니다.