Tính tỷ lệ phần trăm và format thêm dấu % trong MySQL
Sử dụng SUM() tính tổng điểm, chia cho tổng điểm tối đa, nhân 100, làm tròn ROUND(), nối chuỗi CONCAT(...,'%').
1. Tạo bảng và chèn điểm 5 môn
mysql> CREATE TABLE DemoTable (Marks INT);
mysql> INSERT INTO DemoTable VALUES (88), (65), (98), (45), (67);
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+-------+ | Marks | +-------+ | 88 | | 65 | | 98 | | 45 | | 67 | +-------+
3. Truy vấn: Tính % (giả sử mỗi môn max 100, 5 môn = 500)
mysql> SELECT CONCAT(ROUND(SUM(Marks) * 100 / 500), '%') FROM DemoTable;
4. Kết quả
+---------------------------------------+ | CONCAT(ROUND(SUM(Marks)*100/500),'%') | +---------------------------------------+ | 73% | +---------------------------------------+
Phân tích:
- Tổng điểm: 88+65+98+45+67 = 363
- Tổng max: 5 môn × 100 = 500
- Phần trăm: 363 × 100 / 500 = 72.6
ROUND(72.6)= 73CONCAT(73, '%')= '73%'
Cải tiến - Tính % cho từng sinh viên (nếu có cột StudentId):
SELECT StudentId,
CONCAT(ROUND(SUM(Marks) * 100 / (COUNT(*) * 100)), '%') AS Percentage
FROM DemoTable
GROUP BY StudentId;
Làm tròn 2 chữ số thập phân:
CONCAT(ROUND(SUM(Marks) * 100.0 / 500, 2), '%') -- 72.60%
Lưu ý: Dùng 100.0 (float) thay vì 100 (int) để tránh chia nguyên số trong MySQL cũ.