Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để sử dụng hàm MySQL COALESCE () với hàm MySQL SUM () để tùy chỉnh kết quả đầu ra?


Khi hàm MySQL SUM () có một cột, không có giá trị, một đối số thì nó sẽ trả về NULL, thay vì 0, làm đầu ra. Nhưng nếu chúng ta muốn tùy chỉnh đầu ra này để hiển thị 0 dưới dạng đầu ra thì chúng ta có thể sử dụng hàm MySQL COALESCE () chấp nhận hai đối số và trả về đối số thứ hai nếu đối số đầu tiên là NULL, ngược lại, nó trả về đối số đầu tiên. Để minh họa điều đó, chúng tôi đang lấy ví dụ về bảng 'Đấu thầu' có dữ liệu sau -

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)

Hàm MySQL SUM () trả về NULL khi chúng tôi cố gắng tìm tổng giá trị thầu được trích dẫn bởi ‘Honda Group’ vì nó không có giá trị trong cột.

mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group';

+-------------------+
| SUM(Tender_value) |
+-------------------+
|              NULL |
+-------------------+

1 row in set (0.00 sec)

Tuy nhiên, giả sử nếu chúng ta muốn tùy chỉnh đầu ra này từ NULL thành 0 thì chúng ta có thể sử dụng hàm COALESCE với SUM () để tìm tổng giá trị đấu thầu được trích dẫn bởi ‘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)

Bây giờ, hàm MySQL SUM () trả về 0 khi chúng ta sử dụng hàm COALESCE với hàm SUM () để tìm tổng số trang được nhập bởi 'Mohan', tên không có trong cột 'Tên' -

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)

Từ các tập kết quả trên, rõ ràng là hàm MySQL SUM () sẽ trả về NULL nếu không có giá trị nào trong cột bất kể kiểu dữ liệu của nó.