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

MySQL에서 고유(DISTINCT) 값의 개수를 계산하는 방법

MySQL에서 테이블에 저장된 데이터의 고유한(중복되지 않은) 값이 몇 개인지 확인하고 싶다면, 집계 함수인 COUNT() 안에 DISTINCT 키워드를 함께 사용하면 됩니다.

기본 문법

SELECT COUNT(DISTINCT yourColumnName) AS anyVariableName FROM yourTableName;

위 문법에서 yourColumnName에는 중복 여부를 검사할 열 이름을, yourTableName에는 대상 테이블 이름을 입력합니다. 결과는 별칭(AS)으로 지정한 이름의 열로 출력됩니다.

예제 테이블 생성하기

개념을 쉽게 이해하기 위해 간단한 테이블을 먼저 만들어 보겠습니다. 아래는 테이블을 생성하는 쿼리입니다.

mysql> CREATE TABLE DistinctDemo
   -> (
   -> Name varchar(200)
   -> );
Query OK, 0 rows affected (0.58 sec)

중복 데이터 삽입하기

예제를 위해 의도적으로 중복된 레코드를 여러 개 삽입하겠습니다.

mysql> INSERT INTO DistinctDemo VALUES('John');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO DistinctDemo VALUES('Sam');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO DistinctDemo VALUES('John');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO DistinctDemo VALUES('Johnson');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT INTO DistinctDemo VALUES('John');
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO DistinctDemo VALUES('Johnson');
Query OK, 1 row affected (0.12 sec)

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

mysql> INSERT INTO DistinctDemo VALUES('Johnson');
Query OK, 1 row affected (0.10 sec)

저장된 전체 레코드 확인하기

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

mysql> SELECT * FROM DistinctDemo;

실행 결과 일부 이름이 중복되어 저장된 것을 확인할 수 있습니다.

+---------+
| Name    |
+---------+
| John    |
| Sam     |
| John    |
| Johnson |
| John    |
| Johnson |
| Sam     |
| Johnson |
+---------+
8 rows in set (0.00 sec)

총 8개의 레코드가 있지만, 실제로는 'John', 'Sam', 'Johnson' 세 가지 이름만 반복되고 있습니다.

고유 값 개수 세기

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

mysql> SELECT COUNT(DISTINCT Name) AS DistinctValues FROM DistinctDemo;

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

+----------------+
| DistinctValues |
+----------------+
|              3 |
+----------------+
1 row in set (0.01 sec)

결과 해석

결과값 3은 해당 테이블의 Name 열에 서로 다른 값이 정확히 3개('John', 'Sam', 'Johnson') 존재한다는 의미입니다. 이처럼 COUNT(DISTINCT 열이름) 구문을 활용하면 중복된 데이터를 걸러내고 순수하게 고유한 값만 손쉽게 집계할 수 있습니다.