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

MySQL에서 SUM() 함수로 값이 0인 행도 표시하는 방법

MySQL에서 값이 0인 행 표시하기

테이블에 존재하지 않는 상태값의 개수를 조회할 때, 해당 데이터가 없더라도 결과에 0으로 표시하고 싶은 경우가 있습니다. 이럴 때는 조건식과 함께 집계 함수 SUM()을 사용하면 됩니다.

MySQL에서는 boolean 표현식이 참일 경우 1, 거짓일 경우 0을 반환하므로, SUM() 함수 안에 조건식을 넣으면 해당 조건을 만족하는 행의 개수를 손쉽게 계산할 수 있습니다.

1. 테이블 생성

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

mysql> create table DemoTable
    -> (
    -> Status varchar(20)
    -> );
Query OK, 0 rows affected (1.22 sec)

2. 레코드 삽입

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

mysql> insert into DemoTable values('active');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('active');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('active');
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values('active');
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 조회

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

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

+--------+
| Status |
+--------+
| active |
| active |
| active |
| active |
+--------+
4 rows in set (0.00 sec)

4. 값이 0인 행 표시 쿼리

테이블에 존재하지 않는 'inactive' 상태까지 포함해 개수를 조회하려면 아래와 같이 SUM() 함수에 조건식을 넣어 쿼리를 작성합니다.

mysql> select
    -> sum(Status='active') as 'CountOfActive',
    -> sum(Status='inactive') as 'CountOfInActive'
    -> from DemoTable;

실행 결과는 다음과 같습니다. 'inactive' 상태의 레코드는 테이블에 하나도 없기 때문에 CountOfInActive 열에 0이 표시되는 것을 확인할 수 있습니다.

+---------------+-----------------+
| CountOfActive | CountOfInActive |
+---------------+-----------------+
|            4 |              0 |
+---------------+-----------------+
1 row in set (0.30 sec)

정리

SUM() 함수 안에 조건식을 활용하면, 단순히 COUNT()만 사용했을 때는 확인할 수 없는 존재하지 않는 값(0개)의 정보까지 결과에 명확하게 표시할 수 있습니다. 이 기법은 대시보드나 통계 리포트를 구성할 때 특히 유용하게 사용됩니다.