Vấn đề: Tạo cột tính toán (computed column) – lương tháng = lương năm / 12
Bảng nhân viên có cột EmployeeSalary (lương năm). Cần hiển thị thêm cột MonthlySalary.
Giải pháp: Biểu thức toán học trong SELECT
Dùng phép chia / trực tiếp trong danh sách cột SELECT.
1. Tạo bảng và dữ liệu
CREATE TABLE DemoTable (
EmployeeId INT,
EmployeeName VARCHAR(20),
EmployeeSalary INT
);
INSERT INTO DemoTable VALUES
(1, 'Chris', 240000),
(2, 'Bob', 120000),
(3, 'David', 180000),
(4, 'Mike', 650000);
2. Truy vấn tính lương tháng
SELECT EmployeeName, EmployeeSalary / 12 AS MonthlySalary
FROM DemoTable;
3. Kết quả
+--------------+---------------+
| EmployeeName | MonthlySalary |
+--------------+---------------+
| Chris | 20000.0000|
| Bob | 10000.0000|
| David | 15000.0000|
| Mike | 54166.6667|
+--------------+---------------+
Định dạng số (Format)
- Làm tròn 2 chữ số:
ROUND(EmployeeSalary / 12, 2). - Định dạng tiền tệ:
FORMAT(EmployeeSalary / 12, 2)→ '20,000.00' (chuỗi). - Ép kiểu INT:
CAST(EmployeeSalary / 12 AS UNSIGNED)→ 20000 (cắt phần thập phân).
Lưu ý
- Phép chia
/trong MySQL trả về kiểuDECIMAL(số thực). - Nếu muốn lưu cột này, dùng
GENERATED COLUMN(MySQL 5.7+):ALTER TABLE DemoTable ADD MonthlySalary DECIMAL(10,2) GENERATED ALWAYS AS (EmployeeSalary / 12) STORED; - Chia cho 0 → trả về NULL (không báo lỗi).