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
FORMATtrả 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 |
+--------+------------+--------------+