NULLIF và IIF
Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 4 trên 27.
Còn hai hàm hỗ trợ điều kiện nữa, cả hai đều nhỏ gọn và hữu ích.
NULLIF(a, b) trả về NULL khi a = b, nếu không thì trả về a. Cách dùng phổ biến là tránh phép chia cho không:
SELECT total / NULLIF(count, 0) AS average
FROM statsNếu count bằng không, ta nhận được NULL thay vì gặp lỗi.
IIF(cond, a, b) là cách viết tắt hai nhánh cho CASE WHEN cond THEN a ELSE b END. Hãy dùng nó khi chỉ có hai lựa chọn; dùng CASE khi có nhiều nhánh hơn.
Thử thách
DễCác bảng và cột hiện có:
matches:id,shots,goals
Trả về cho mỗi trận đấu:
idconversion:goals * 1.0 / shots, nhưng trả vềNULLkhishotslà0(dùngNULLIF)verdict:'win'khigoals > 0, nếu không thì trả về'no goals'(dùngIIF)
Sắp xếp theo id.
Tự làm thử
SELECT id,
-- Chuyển đổi bằng NULLIF
-- Xác định kết quả bằng IIF
FROM matches
ORDER BY id
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản
6Công thức phân tích dữ liệu
Top N trong mỗi nhómTỷ lệ trên tổngTổng lũy kếGiữ lại một hàng cho mỗi khóaÔn tập: khách hàng hàng đầuTự luyện tập: Playground SQL