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

MySQL 테이블에서 NULL 또는 0이 아닌 열의 개수를 세는 방법

MySQL 테이블에서 NULL이 아니고 0도 아닌 열의 개수를 계산하려면 if() 함수를 사용하면 됩니다. 각 열에 대해 조건식을 평가해 조건을 만족하면 1, 만족하지 않으면 0을 반환하고, 그 결과를 더하는 방식으로 개수를 구할 수 있습니다.

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Number1 int,
    -> Number2 int
    -> );
Query OK, 0 rows affected (1.15 sec)

2단계: 데이터 삽입

insert 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable(Number1,Number2) values(10,20);
Query OK, 1 row affected (0.41 sec)

mysql> insert into DemoTable(Number1,Number2) values(0,32);
Query OK, 1 row affected (0.38 sec)

mysql> insert into DemoTable(Number1,Number2) values(40,0);
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable(Number1,Number2) values(40,50);
Query OK, 1 row affected (0.17 sec)

3단계: 저장된 데이터 확인

select 문으로 테이블의 전체 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

+----+---------+---------+
| Id | Number1 | Number2 |
+----+---------+---------+
| 1  | 10      | 20      |
| 2  | 0       | 32      |
| 3  | 40      | 0       |
| 4  | 40      | 50       |
+----+---------+---------+
4 rows in set (0.00 sec)

NULL 또는 0이 아닌 열 개수 세기

다음 쿼리는 테이블에서 NULL이 아니고 0이 아닌 열의 개수를 계산합니다.

mysql> select *,
-> if(Number1 <> 0,1,0)+if(Number2 <> 0,1,0) AS TotalCount
-> from DemoTable;

출력 결과

+----+---------+---------+------------+
| Id | Number1 | Number2 | TotalCount |
+----+---------+---------+------------+
| 1  | 10      | 20      | 2          |
| 2  | 0       | 32      | 1          |
| 3  | 40      | 0       | 1          |
| 4  | 40      | 50      | 2          |
+----+---------+---------+------------+
4 rows in set (0.00 sec)

쿼리 동작 원리

if(Number1 <> 0, 1, 0)은 Number1 열의 값이 0이 아니면 1을, 0이면 0을 반환합니다. 참고로 값이 NULL인 경우 비교 결과 역시 거짓으로 처리되므로, 이 조건 하나로 NULL과 0을 동시에 걸러낼 수 있습니다.

두 조건식의 결과를 더하면 해당 행에서 유효한 값을 가진 열의 개수가 됩니다. 예를 들어 위 결과에서 Id가 2인 행은 Number1이 0이고 Number2가 32이므로 TotalCount가 1이 되며, Id가 4인 행은 두 열 모두 0이 아니므로 TotalCount가 2가 됩니다.