MySQL SUM() 함수에 값이 없고 인수가 없는 열이 있으면 출력으로 0이 아닌 NULL을 반환합니다. 그러나 이 출력을 출력으로 0을 표시하도록 사용자 정의하려면 두 개의 인수를 받아들이고 첫 번째 인수가 NULL이면 두 번째 인수를 반환하고, 그렇지 않으면 첫 번째 인수를 반환하는 MySQL COALESCE() 함수를 사용할 수 있습니다. 이를 설명하기 위해 다음 데이터가 있는 '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)
MySQL SUM() 함수는 컬럼에 값이 없기 때문에 'Honda Group'에서 인용한 총 입찰가를 찾으려고 하면 NULL을 반환합니다.
mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group'; +-------------------+ | SUM(Tender_value) | +-------------------+ | NULL | +-------------------+ 1 row in set (0.00 sec)
그러나 이 출력을 NULL에서 0으로 사용자 정의하려는 경우 SUM()과 함께 COALESCE 함수를 사용하여 'Honda Group'에서 인용한 총 입찰 가치를 찾을 수 있다고 가정합니다.
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)
이제 MySQL SUM() 함수는 '이름' 열에 없는 이름인 'Mohan'이 입력한 총 페이지 수를 찾기 위해 SUM()과 함께 COALESCE 함수를 사용할 때 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을 반환한다는 것이 분명합니다.