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

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

Trong phần cuối cùng này, chúng ta sẽ tập trung vào việc áp dụng biểu thức điều kiện `CASE` trong các tình huống phân tích dữ liệu nâng cao và phức tạp, sử dụng nhiều ví dụ chi tiết và cụ thể để minh họa.

#### Áp Dụng CASE trong Tình Huống Phức Tạp

* Sử dụng `CASE` trong các kịch bản phức tạp như phân tích xu hướng, điều kiện dựa trên nhiều cột, và kết hợp với các hàm SQL khác.
    

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

1. **Phân Tích Xu Hướng Mua Sắm**
    
    * Phân loại đơn hàng dựa trên tổng giá trị và thời gian đặt hàng:
        
        ```sql
        SELECT order_id,
               CASE
                   WHEN total_value > 1000 AND order_date BETWEEN '2023-01-01' AND '2023-06-30' THEN 'High Value - First Half'
                   WHEN total_value < 1000 AND order_date BETWEEN '2023-07-01' AND '2023-12-31' THEN 'Low Value - Second Half'
                   ELSE 'Other'
               END AS order_category
        FROM orders;
        ```
        
2. **CASE Trong Kết Hợp với Hàm Tổng Hợp**
    
    * Tính trung bình giá của sản phẩm dựa trên phân loại:
        
        ```sql
        SELECT CASE
                   WHEN category = 'Electronics' THEN 'Electronics'
                   WHEN category = 'Clothing' THEN 'Clothing'
                   ELSE 'Other'
               END AS product_category,
               AVG(price) AS average_price
        FROM products
        GROUP BY product_category;
        ```
        
3. **Điều Kiện Phức Tạp Trên Nhiều Cột**
    
    * Đánh giá hiệu suất bán hàng dựa trên số lượng bán và đánh giá của khách hàng:
        
        ```sql
        SELECT product_id,
               CASE
                   WHEN quantity_sold > 50 AND customer_rating > 4 THEN 'High Performing'
                   WHEN quantity_sold < 20 AND customer_rating < 3 THEN 'Low Performing'
                   ELSE 'Average Performing'
               END AS performance_category
        FROM product_sales;
        ```
        
4. **CASE trong WHERE Clause**
    
    * Lọc danh sách khách hàng dựa trên phân loại tuổi và doanh thu mua hàng:
        
        ```sql
        SELECT * FROM customers
        WHERE CASE
                  WHEN age < 30 AND total_purchase > 500 THEN TRUE
                  WHEN age BETWEEN 30 AND 50 AND total_purchase > 1000 THEN TRUE
                  ELSE FALSE
              END;
        ```
        

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

1. **Phân Tích Doanh Thu Dựa Trên Mùa Vụ**
    
    * Sử dụng `CASE` để phân loại và phân tích doanh thu theo mùa vụ, xem xét cả tổng giá trị và số lượng sản phẩm bán ra.
        
2. **Phân Loại Khách Hàng Theo Độ Tuổi và Sở Thích**
    
    * Phân loại khách hàng dựa trên độ tuổi và loại sản phẩm họ mua nhiều nhất.
        

#### Kết Luận

Biểu thức `CASE` trong SQL không chỉ là công cụ để xử lý các tình huống cơ bản mà còn mở rộng khả năng phân tích và phân loại dữ liệu ở cấp độ cao hơn. Sự sáng tạo và hiểu biết sâu rộng về cách sử dụng `CASE` có thể giúp tiết lộ những thông tin quý giá từ dữ liệu, tạo ra cái nhìn sâu sắc và giá trị thực sự cho quá trình phân tích dữ liệu.
