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

Kết hợp SUM và FORMAT trong MySQL để định dạng tổng tiền

Vấn đề: Tính tổng cột số thực và định dạng 2 chữ số thập phân

Cột Amount kiểu FLOAT. Cần SUM và hiển thị dạng '312.73'.

Giải pháp: FORMAT(SUM(column), decimals)

FORMAT(number, decimals) trả về chuỗi định dạng có dấu phẩy ngăn cách hàng nghìn và số chữ số thập phân cố định.

1. Tạo bảng và dữ liệu

CREATE TABLE DemoTable (Amount FLOAT);
INSERT INTO DemoTable VALUES (45.60), (101.78), (75.90), (89.45);

2. Truy vấn

SELECT FORMAT(SUM(Amount), 2) AS TotalSum 
FROM DemoTable;

3. Kết quả

+----------+
| TotalSum |
+----------+
| 312.73   |
+----------+

Giải thích

  • SUM(Amount) = 312.73 (số thực).
  • FORMAT(..., 2) → Chuỗi '312.73' (có 2 chữ số thập phân, có thể có dấu phẩy hàng nghìn nếu lớn hơn 1000).

Lưu ý quan trọng

  • FORMAT trả về VARCHAR (chuỗi), không phải số. Không dùng cho tính toán tiếp.
  • Locale ảnh hưởng đến dấu phân cách (dấu phẩy vs dấu chấm). MySQL dùng locale 'en_US' mặc định.
  • Để tính toán tiếp, dùng ROUND(SUM(Amount), 2) (trả về DECIMAL).
  • Khi lưu tiền tệ, luôn dùng DECIMAL(10,2), không dùng FLOAT/DOUBLE (lỗi làm tròn nhị phân).

Ví dụ đầy đủ

SELECT 
    SUM(Amount) AS RawSum,
    ROUND(SUM(Amount), 2) AS RoundedSum,
    FORMAT(SUM(Amount), 2) AS FormattedSum
FROM DemoTable;
+--------+------------+--------------+
| RawSum | RoundedSum | FormattedSum |
+--------+------------+--------------+
| 312.73 |     312.73 | 312.73       |
+--------+------------+--------------+