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

MySQL COALESCE()와 SUM() 함수를 함께 사용해 출력 결과를 원하는 값으로 바꾸는 방법

MySQL의 SUM() 함수는 집계 대상 컬럼에 값이 하나도 없을 경우 0이 아닌 NULL을 반환합니다. 하지만 결과 화면에 0으로 표시하고 싶다면 COALESCE() 함수를 함께 사용하면 됩니다. COALESCE() 함수는 두 개의 인자를 받으며, 첫 번째 인자가 NULL이면 두 번째 인자를 반환하고, NULL이 아니라면 첫 번째 인자를 그대로 반환하는 방식으로 동작합니다.

예제 데이터 살펴보기

이해를 돕기 위해 다음과 같은 데이터를 가진 'Tender' 테이블을 예로 들어 보겠습니다.

mysql> Select * from tender;

+----+---------------+--------------+
| Sr | CompanyName   | Tender_value |
+----+---------------+--------------+
| 1  | Abc Corp.     | 250.369003   |
| 2  | Khaitan Corp. | 265.588989   |
| 3  | Singla group. | 220.255997   |
| 4  | Hero group.   | 221.253006   |
| 5  | Honda group   | NULL         |
+----+---------------+--------------+

5 rows in set (0.00 sec)

SUM() 함수 단독 사용 시 NULL 반환

'Honda Group'이 제시한 입찰 금액의 총합을 구하려고 하면, 해당 회사의 Tender_value 컬럼에 값이 없기 때문에 SUM() 함수는 NULL을 반환합니다.

mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group';

+-------------------+
| SUM(Tender_value) |
+-------------------+
|               NULL|
+-------------------+

1 row in set (0.00 sec)

COALESCE() 함수로 NULL을 0으로 변경하기

만약 이러한 NULL 출력을 0으로 바꾸고 싶다면, COALESCE() 함수를 SUM() 함수와 함께 사용하면 됩니다. 아래 예시에서 'Honda Group'의 총 입찰 금액이 0으로 표시되는 것을 확인할 수 있습니다.

mysql> Select COALESCE(SUM(Tender_value),0) From Tender Where CompanyName = 'Honda Group';

+-------------------------------+
| COALESCE(SUM(Tender_value),0) |
+-------------------------------+
|                       0.000000|
+-------------------------------+

1 row in set (0.00 sec)

존재하지 않는 데이터에 대한 적용 예시

COALESCE()와 SUM()을 함께 사용하면 테이블에 존재하지 않는 이름을 조건으로 조회할 때도 유용합니다. 아래 예시에서는 employee_tbl 테이블에 없는 'Mohan'이라는 이름으로 입력된 페이지 수의 합계를 구했으며, 결과가 0으로 반환됩니다.

mysql> SELECT COALESCE(SUM(daily_typing_pages),0) FROM employee_tbl WHERE Name = 'Mohan';

+-------------------------+
| SUM(daily_typing_pages) |
+-------------------------+
|                       0 |
+-------------------------+

1 row in set (0.00 sec)

정리

위의 결과들을 통해 알 수 있듯이, MySQL의 SUM() 함수는 컬럼에 값이 전혀 없으면 데이터 타입과 관계없이 항상 NULL을 반환합니다. 따라서 NULL 대신 0 또는 다른 기본값을 출력하고 싶다면 COALESCE() 함수를 활용하는 것이 가장 간단하고 효과적인 방법입니다.