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

MySQL에서 열의 고유 레코드 개수 구하기 – COUNT(DISTINCT) 완벽 가이드

MySQL COUNT(DISTINCT)로 고유 레코드 개수 세기

MySQL에서 특정 열에 저장된 값 중 중복을 제거한 고유(distinct) 레코드의 개수를 구하려면 COUNT() 함수와 함께 DISTINCT 키워드를 사용하면 됩니다. 이 조합은 데이터 분석 시 중복 값을 배제하고 실제 고유한 값이 몇 개 존재하는지 확인할 때 매우 유용합니다.

기본 문법

SELECT COUNT(DISTINCT yourColumnName) FROM yourTableName;

위 문법에서 yourColumnName에는 고유 개수를 세고 싶은 열의 이름을, yourTableName에는 대상 테이블 이름을 입력합니다.

1단계: 테이블 생성하기

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

mysql> CREATE TABLE DemoTable
-> (
-> Name varchar(20),
-> Score int
-> );
Query OK, 0 rows affected (0.67 sec)

2단계: 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다. 의도적으로 동일한 데이터를 반복해서 삽입하여 중복 값을 만들어 두었습니다.

mysql> INSERT INTO DemoTable VALUES('John',56);
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO DemoTable VALUES('Sam',89);
Query OK, 1 row affected (0.20 sec)

mysql> INSERT INTO DemoTable VALUES('John',56);
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO DemoTable VALUES('Carol',60);
Query OK, 1 row affected (0.20 sec)

mysql> INSERT INTO DemoTable VALUES('Sam',89);
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO DemoTable VALUES('Carol',60);
Query OK, 1 row affected (0.20 sec)

3단계: 전체 레코드 조회하기

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

mysql> SELECT * FROM DemoTable;

출력 결과

+-------+-------+
| Name  | Score |
+-------+-------+
| John  | 56    |
| Sam   | 89    |
| John  | 56    |
| Carol | 60    |
| Sam   | 89    |
| Carol | 60    |
+-------+-------+
6 rows in set (0.00 sec)

총 6개의 레코드가 있지만, Score 열의 실제 값은 56, 89, 60 세 가지뿐입니다. 나머지는 모두 중복된 값입니다.

4단계: 고유 레코드 개수 구하는 쿼리 실행하기

이제 COUNT(DISTINCT)를 사용해 Score 열의 고유 값 개수를 구하는 쿼리를 실행해 보겠습니다.

mysql> SELECT COUNT(DISTINCT Score) FROM DemoTable;

출력 결과

+-----------------------+
| count(DISTINCT Score) |
+-----------------------+
| 3                     |
+-----------------------+
1 row in set (0.00 sec)

결과 해석

테이블에는 6개의 행이 존재하지만, COUNT(DISTINCT Score) 쿼리는 중복을 제거한 후의 고유한 점수가 총 3개(56, 89, 60)임을 정확히 반환했습니다. 이처럼 COUNT()와 DISTINCT를 함께 사용하면 대량의 데이터에서도 손쉽게 고유 값의 개수를 파악할 수 있습니다.