Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hàm SUM() cộng giá trị thập phân (DECIMAL) trong MySQL


Giới thiệu

Hàm SUM() trong MySQL hoạt động chính xác với kiểu DECIMAL, phù hợp cho tính toán tiền tệ, tài chính tránh sai số điểm động (floating point error).

Ví dụ minh họa

Tạo bảng kiểu DECIMAL(7,2)

mysql> CREATE TABLE DemoTable (
    Money DECIMAL(7,2)
);

DECIMAL(7,2): Tổng 7 chữ số, 2 chữ số sau dấu phẩy. Phạm vi: -99999.99 đến 99999.99.

Chèn dữ liệu

mysql> INSERT INTO DemoTable VALUES 
(100.67), (199.33), (500), (400), (800);

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+--------+
| Money  |
+--------+
| 100.67 |
| 199.33 |
| 500.00 |
| 400.00 |
| 800.00 |
+--------+

Tính tổng

mysql> SELECT SUM(Money) FROM DemoTable;
+------------+
| SUM(Money) |
+------------+
| 2000.00    |
+------------+

Tại sao dùng DECIMAL cho tiền tệ?

KiểuVí dụVấn đề
FLOAT/DOUBLE0.1 + 0.2 = 0.30000000000000004Sai số binary floating point
DECIMAL(10,2)0.1 + 0.2 = 0.30Chính xác tuyệt đối

Lưu ý

  • SUM() trả về kiểu DECIMAL với precision đủ lớn chứa kết quả.
  • Nếu cột là VARCHAR chứa số, cần CAST(col AS DECIMAL(10,2)) trước khi SUM.
  • COALESCE(SUM(Money), 0) trả về 0 thay vì NULL khi bảng rỗng.