Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การใช้ฟังก์ชัน COALESCE() ร่วมกับ SUM() ใน MySQL เพื่อปรับแต่งผลลัพธ์

ปัญหาของ SUM() ที่คืนค่า NULL

เมื่อฟังก์ชัน SUM() ได้รับคอลัมน์ที่ไม่มีค่า (empty/no values) เป็นอาร์กิวเมนต์ จะคืนค่า NULL แทนที่จะเป็น 0 แต่เราสามารถปรับแต่งให้แสดงเป็น 0 ได้โดยใช้ฟังก์ชัน COALESCE()

หลักการทำงานของ COALESCE()

COALESCE() รับอาร์กิวเมนต์ 2 ค่า และจะคืนค่าอาร์กิวเมนต์ที่ 2 หากอาร์กิวเมนต์แรกเป็น 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)

โดยไม่ใช้ COALESCE() - คืนค่า NULL:

mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group';
+-------------------+
| SUM(Tender_value) |
+-------------------+
| NULL              |
+-------------------+
1 row in set (0.00 sec)

ใช้ COALESCE() ร่วมกับ SUM() - คืนค่า 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)

ตัวอย่างเพิ่มเติม: ค้นหาผลรวมของชื่อที่ไม่มีในตาราง

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)

สรุป: SUM() จะคืนค่า NULL หากไม่มีค่าในคอลัมน์ ไม่ว่าจะเป็นชนิดข้อมูลใดก็ตาม การใช้ COALESCE() ช่วยให้สามารถกำหนดค่าเริ่มต้นเป็น 0 ได้