# Bài Giảng 17: Conditional Expression trong SQL – Phần 1

#### Mục Tiêu Bài Giảng

Giới thiệu về biểu thức điều kiện trong SQL, tập trung vào việc sử dụng `CASE` statement để xử lý dữ liệu dựa trên các điều kiện. Bài giảng sẽ cung cấp các ví dụ cụ thể và chi tiết để minh họa cách áp dụng trong các tình huống thực tế.

#### Giới Thiệu về CASE Statement

* `CASE` là một biểu thức điều kiện trong SQL, cho phép thực hiện lựa chọn và xử lý dữ liệu dựa trên một loạt các điều kiện.
    
* Cú pháp cơ bản:
    
    ```sql
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
        ELSE resultN
    END
    ```
    

#### Ví dụ Minh Họa

1. **Phân Loại Dữ Liệu**
    
    * Phân loại sản phẩm dựa trên giá:
        
        ```sql
        SELECT product_name,
               CASE
                   WHEN price < 100 THEN 'Budget'
                   WHEN price BETWEEN 100 AND 500 THEN 'Mid-range'
                   ELSE 'Premium'
               END AS category
        FROM products;
        ```
        
2. **Sử Dụng CASE trong SELECT**
    
    * Đánh giá mức độ hài lòng của khách hàng:
        
        ```sql
        SELECT customer_id,
               CASE
                   WHEN satisfaction_rating > 8 THEN 'Highly satisfied'
                   WHEN satisfaction_rating BETWEEN 5 AND 8 THEN 'Satisfied'
                   ELSE 'Not satisfied'
               END AS satisfaction_level
        FROM customers;
        ```
        
3. **CASE trong ORDER BY**
    
    * Sắp xếp sản phẩm theo danh mục:
        
        ```sql
        SELECT * FROM products
        ORDER BY CASE
                     WHEN category = 'Electronics' THEN 1
                     WHEN category = 'Clothing' THEN 2
                     ELSE 3
                 END;
        ```
        
4. **Kết Hợp CASE với Aggregation Function**
    
    * Tính trung bình giá theo phân loại:
        
        ```sql
        SELECT CASE
                   WHEN price < 100 THEN 'Budget'
                   WHEN price BETWEEN 100 AND 500 THEN 'Mid-range'
                   ELSE 'Premium'
               END AS category,
               AVG(price) AS average_price
        FROM products
        GROUP BY category;
        ```
        

#### Thực Hành và Bài Tập

1. **Phân Tích Doanh Thu**
    
    * Sử dụng `CASE` để phân loại doanh thu của các sản phẩm và tính tổng doanh thu cho mỗi loại.
        
2. **Phân Loại Khách Hàng**
    
    * Tạo một phân loại khách hàng dựa trên số lượng đơn hàng của họ.
        

#### Kết Luận

Biểu thức điều kiện như `CASE` trong SQL cho phép xử lý dữ liệu một cách linh hoạt và động, giúp chuyển đổi và phân loại dữ liệu dựa trên các tiêu chí cụ thể. Sự hiểu biết sâu về `CASE` là một công cụ quan trọng trong việc phân tích dữ liệu và truy vấn thông tin một cách chính xác và hiệu quả.
