Menu
CoddyTech

CASE WHEN

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 1 trên 27.

Biểu thức CASE là dạng if/else if/else trong SQL. Biểu thức này nằm trong SELECT (hoặc ORDER BY, hoặc WHERE) và tạo ra một giá trị cho mỗi hàng.

SELECT name,
       CASE
           WHEN score >= 90 THEN 'A'
           WHEN score >= 75 THEN 'B'
           WHEN score >= 60 THEN 'C'
           ELSE 'F'
       END AS grade
FROM students

Mỗi WHEN được kiểm tra từ trên xuống dưới; điều kiện khớp đầu tiên sẽ được chọn. ELSE là tùy chọn. Nếu không có, các hàng không khớp sẽ nhận NULL.

Luôn kết thúc bằng END và đặt tên cho cột bằng AS.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • employees: id, name, department, salary

Với mỗi nhân viên, trả về name, department và một cột tier được tạo như sau:

  • 'partner' khi salary >= 150000 (ở bất kỳ bộ phận nào)
  • 'senior' khi department = 'eng' và salary >= 100000
  • 'mid' khi salary >= 60000
  • 'entry' trong các trường hợp còn lại

Sắp xếp theo salary giảm dần. Lưu ý thứ tự các nhánh WHEN rất quan trọng: điều kiện khớp đầu tiên sẽ được chọn.

Tự làm thử

SELECT name, department,
       -- tier với nhiều nhánh WHEN kết hợp salary và department
FROM employees
quiz iconTự kiểm tra

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

Tự luyện tập: Playground SQL