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

MySQL 단일 쿼리로 NULL 값 제외하고 열 값 개수 세는 방법

MySQL에서 NULL 값을 무시하고 특정 열의 값 개수를 계산하려면 COUNT() 함수를 사용하면 됩니다. COUNT() 함수는 기본적으로 NULL 값을 집계에서 제외하기 때문에 별도의 조건 처리 없이 간단하게 원하는 결과를 얻을 수 있습니다.

실제 예제를 통해 확인해 보겠습니다. 먼저 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Name varchar(100),
-> CountryName varchar(100)
-> );
Query OK, 0 rows affected (0.49 sec)

다음으로 insert 명령을 사용해 몇 개의 레코드를 삽입합니다. 이때 일부 레코드에는 의도적으로 NULL 값을 넣습니다.

mysql> insert into DemoTable values('John',null);
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values('Chris','US');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values('Robert',null);
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('Bob','UK');
Query OK, 1 row affected (0.57 sec)

select 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+--------+-------------+
| Name | CountryName |
+--------+-------------+
| John | NULL |
| Chris | US |
| Robert | NULL |
| Bob | UK |
+--------+-------------+
4 rows in set (0.00 sec)

테이블에는 총 4개의 레코드가 있으며, CountryName 열에는 NULL 값이 2개 포함되어 있습니다.

COUNT()로 NULL 제외하고 개수 세기

이제 COUNT() 함수를 사용하여 NULL을 자동으로 제외하고 열 값을 계산하는 쿼리입니다.

mysql> select count(Name) AS TotalName,count(CountryName) AS CountryWhichIsNotNull from DemoTable;

출력 결과

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

+-----------+-----------------------+
| TotalName | CountryWhichIsNotNull |
+-----------+-----------------------+
| 4 | 2 |
+-----------+-----------------------+
1 row in set (0.00 sec)

결과 분석

실행 결과를 살펴보면 다음과 같은 의미를 가집니다.

TotalName = 4: Name 열에는 NULL 값이 없으므로 전체 4개 행이 모두 집계되었습니다.
CountryWhichIsNotNull = 2: CountryName 열에는 NULL 값이 2개 있었기 때문에, COUNT()가 NULL을 제외한 나머지 2개(US, UK)만 집계했습니다.

이처럼 COUNT(열이름) 형태로 사용하면 해당 열의 NULL 값을 자동으로 제외하고 개수를 계산할 수 있습니다. 참고로 COUNT(*)를 사용하면 NULL 여부와 관계없이 모든 행의 개수를 반환한다는 점도 함께 기억해 두면 좋습니다.