Vấn đề: Phân loại điểm số thành 'Good Marks' / 'Not Good Marks'
Cột Marks lưu điểm. Cần cột Result hiển thị nhãn tùy theo ngưỡng.
Giải pháp: Biểu thức CASE trong SELECT
1. Tạo bảng và dữ liệu
CREATE TABLE DemoTable (Marks INT);
INSERT INTO DemoTable VALUES (35), (65), (55), (39);
2. Truy vấn CASE
SELECT
CASE
WHEN Marks > 40 THEN 'Good Marks'
ELSE 'Not Good Marks'
END AS Result
FROM DemoTable;
3. Kết quả
+----------------+
| Result |
+----------------+
| Not Good Marks |
| Good Marks |
| Good Marks |
| Not Good Marks |
+----------------+
Mở rộng: Nhiều ngưỡng (Grade A/B/C/D/F)
SELECT Marks,
CASE
WHEN Marks >= 90 THEN 'A'
WHEN Marks >= 80 THEN 'B'
WHEN Marks >= 70 THEN 'C'
WHEN Marks >= 60 THEN 'D'
ELSE 'F'
END AS Grade
FROM DemoTable;
Lưu ý
CASEđánh giá theo thứ tự – điều kiện đầu tiên TRUE được chọn.- Có thể dùng dạng
CASE Marks WHEN 100 THEN 'Perfect' ... ENDcho so sánh bằng. - Kết quả CASE có thể dùng trong
GROUP BY,ORDER BY,UPDATE.