Vấn đề: SUM() trả về NULL khi không có giá trị
Khi cột đối số của SUM() không chứa giá trị nào (hoặc toàn NULL), hàm trả về NULL thay vì 0. Để hiển thị 0 thay vì NULL, ta kết hợp với hàm COALESCE().
Cú pháp
COALESCE(SUM(column), 0)
Nếu SUM() trả về NULL, COALESCE sẽ trả về tham số thứ hai (0).
Ví dụ thực tế
Bảng 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 | +----+---------------+--------------+
Không dùng COALESCE:
mysql> SELECT SUM(Tender_value) FROM Tender WHERE CompanyName = 'Honda Group'; +-------------------+ | SUM(Tender_value) | +-------------------+ | NULL | +-------------------+
Có dùng COALESCE:
mysql> SELECT COALESCE(SUM(Tender_value), 0) FROM Tender WHERE CompanyName = 'Honda Group'; +-------------------------------+ | COALESCE(SUM(Tender_value),0) | +-------------------------------+ | 0.000000 | +-------------------------------+
Ứng dụng khác: Tìm tổng số trang gõ của nhân viên không tồn tại ('Mohan'):
mysql> SELECT COALESCE(SUM(daily_typing_pages), 0) FROM employee_tbl WHERE Name = 'Mohan'; +-------------------------+ | SUM(daily_typing_pages) | +-------------------------+ | 0 | +-------------------------+