如何將 MySQL COALESCE() 函式與 MySQL SUM() 函式一起使用來自定義輸出?


當 MySQL SUM() 函式獲取一個沒有值的列作為引數時,它將返回 NULL,而不是 0 作為輸出。但是,如果我們想要自定義此輸出以顯示 0 作為輸出,則可以使用 MySQL COALESCE() 函式,該函式接受兩個引數,如果第一個引數為 NULL,則返回第二個引數,否則返回第一個引數。為了說明這一點,我們以“招標”表為例,該表包含以下資料:

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() 函式返回 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,則可以使用 COALESCE 函式與 SUM() 一起查詢“本田集團”報出的總投標價值。

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() 一起查詢“Mohan”(“姓名”列中不存在的姓名)鍵入的總頁數時,MySQL SUM() 函式返回 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。

更新於: 2020-02-07

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.