SQL Case

Giới thiệu về SQL CASE

Trong ngôn ngữ lập trình SQL, chức năng CASE được sử dụng để thực hiện các phép so sánh điều kiện và trả về kết quả tương ứng. Nó cung cấp khả năng kiểm tra nhiều điều kiện và thực hiện các hành động khác nhau dựa trên giá trị của những điều kiện đó, tương tự như câu lệnh IF...ELSE trong các ngôn ngữ lập trình khác.

Cú pháp của SQL CASE

Có hai cách để sử dụng CASE trong SQL: CASE đơn giản và CASE tìm kiếm.

1. CASE đơn giản

CASE column_name
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

2. CASE tìm kiếm

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

Ví dụ về SQL CASE

Ví dụ 1: Sử dụng CASE đơn giản

Giả sử bạn có một bảng tên là employees với các cột id, name, và department_id. Bạn muốn phân loại nhân viên theo phòng ban của họ.

SELECT id, name,
    CASE department_id
        WHEN 1 THEN 'Kinh doanh'
        WHEN 2 THEN 'Kỹ thuật'
        WHEN 3 THEN 'HR'
        ELSE 'Khác'
    END AS department
FROM employees;

Ví dụ 2: Sử dụng CASE tìm kiếm

Giả sử bạn muốn xác định mức lương của nhân viên dựa trên thâm niên làm việc. Bảng employees có thêm cột years_of_service.

SELECT id, name, years_of_service,
    CASE
        WHEN years_of_service < 1 THEN 'Mới'
        WHEN years_of_service BETWEEN 1 AND 3 THEN 'Nguyền'
        WHEN years_of_service > 3 THEN 'Cao cấp'
        ELSE 'Không xác định'
    END AS level
FROM employees;

Ví dụ 3: Kết hợp CASE với các hàm tổng hợp

Bạn cũng có thể kết hợp CASE với các hàm tổng hợp như COUNT hoặc SUM.

SELECT department_id,
    COUNT(CASE
        WHEN salary > 50000 THEN 1
        END) AS high_salary_count
FROM employees
GROUP BY department_id;

Kết luận

CASE là một công cụ mạnh mẽ trong SQL, cho phép bạn thực hiện các phép so sánh điều kiện và trả về kết quả linh hoạt. Việc hiểu và áp dụng đúng CASE có thể giúp bạn viết các câu truy vấn phức tạp và sáng tạo hơn trong việc truy xuất và xử lý dữ liệu.