เมื่อฟังก์ชัน 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 เมื่อเราพยายามค้นหามูลค่าการประมูลทั้งหมดที่เสนอโดย 'Honda Group' เนื่องจากไม่มีค่าในคอลัมน์
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() เพื่อค้นหามูลค่าการประมูลทั้งหมดที่เสนอโดย '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() จะคืนค่า 0 เมื่อเราใช้ฟังก์ชัน COALESCE กับ SUM() เพื่อค้นหาจำนวนหน้าที่พิมพ์โดย 'Mohan' ซึ่งเป็นชื่อที่ไม่อยู่ในคอลัมน์ 'Name' -
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 หากไม่มีค่าในคอลัมน์โดยไม่คำนึงถึงประเภทข้อมูล