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

MySQL에서 BIGINT 타입 전화번호 열의 고유 전화번호 개수 구하기

MySQL에서 BIGINT 타입으로 선언된 전화번호 열에서 고유한 전화번호의 개수를 구하려면 COUNT() 함수와 DISTINCT 키워드를 함께 사용하면 됩니다. COUNT()는 레코드의 개수를 세는 집계 함수이며, DISTINCT는 중복을 제거한 고유한 값만 대상으로 삼습니다. 두 가지를 조합하면 중복 없이 실제 고유 전화번호가 몇 개 존재하는지 손쉽게 확인할 수 있습니다.

예제 테이블 생성

먼저 BIGINT 타입의 PhoneNumber 컬럼을 가진 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    PhoneNumber bigint
);
Query OK, 0 rows affected (1.29 sec)

샘플 데이터 삽입

INSERT 명령을 사용해 일부 레코드를 삽입합니다. 이때 의도적으로 중복된 전화번호도 함께 넣어 고유 개수 계산이 어떻게 동작하는지 확인합니다.

mysql> insert into DemoTable values(8567789898);
Query OK, 1 row affected (0.94 sec)
mysql> insert into DemoTable values(8567789898);
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable values(9876564534);
Query OK, 1 row affected (0.43 sec)
mysql> insert into DemoTable values(9087896545);
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values(7656456589);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(9876564534);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(9087896545);
Query OK, 1 row affected (0.18 sec)

전체 데이터 조회

SELECT 문을 사용해 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

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

+-------------+
| PhoneNumber |
+-------------+
| 8567789898  |
| 8567789898  |
| 9876564534  |
| 9087896545  |
| 7656456589  |
| 9876564534  |
| 9087896545  |
+-------------+
7 rows in set (0.00 sec)

총 7개의 레코드가 저장되어 있지만, 자세히 보면 일부 번호가 중복되어 있음을 알 수 있습니다.

고유 전화번호 개수 세기

다음은 전화번호 열에서 고유한 전화번호의 개수를 구하는 쿼리입니다. COUNT(DISTINCT 컬럼명) 형태로 작성하며, 별칭(Alias)을 지정하면 결과를 더 읽기 쉽게 만들 수 있습니다.

mysql> select count(distinct PhoneNumber) AS UniquePhoneNumber from DemoTable;

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

+-------------------+
| UniquePhoneNumber |
+-------------------+
|                 4 |
+-------------------+
1 row in set (0.00 sec)

결과 해석

결과를 보면 7개의 레코드 중 실제로 고유한 전화번호는 4개(8567789898, 9876564534, 9087896545, 7656456589)임을 확인할 수 있습니다. 이처럼 COUNT(DISTINCT ...) 조합은 회원 관리 시스템이나 연락처 데이터베이스에서 중복 등록 여부를 점검하거나 통계를 낼 때 매우 유용하게 활용됩니다.