GaussDB SQL基本语法示例:CASE表达式详解

GaussDB SQL基本语法示例:CASE表达式详解
CASE表达式是SQL中实现条件逻辑的核心工具,能够在查询中动态生成字段值。本文将结合GaussDB特性,通过多个示例解析其用法。

一、CASE表达式基础结构

  1. 简单CASE(等值匹配)
SELECT 
    employee_id,
    department,
    CASE department
        WHEN 'HR' THEN '人力资源部'
        WHEN 'IT' THEN '信息技术部'
        ELSE '其他部门'
    END AS dept_cn
FROM employees;
  1. 搜索CASE(条件判断)
SELECT 
    product_name,
    price,
    CASE 
        WHEN price < 100 THEN '经济型'
        WHEN price BETWEEN 100 AND 500 THEN '中端型'
        ELSE '高端型'
    END AS price_range
FROM products;

二、进阶应用场景

  1. 数据分类统计
SELECT 
    COUNT(*) AS total_orders,
    CASE 
        WHEN order_status = 'SHIPPED' THEN '已发货'
        WHEN order_status = 'PENDING' THEN '待处理'
        ELSE '异常订单'
    END AS order_state,
    AVG(order_amount) AS avg_amount
FROM orders
GROUP BY 
    CASE 
        WHEN order_status = 'SHIPPED' THEN '已发货'
        WHEN order_status = 'PENDING' THEN '待处理'
        ELSE '异常订单'
    END;
  1. 动态计算字段
SELECT 
    student_id,
    math_score,
    english_score,
    CASE 
        WHEN math_score > 90 OR english_score > 90 THEN '特长生'
        WHEN math_score + english_score > 180 THEN '优秀生'
        ELSE '普通生'
    END AS student_type
FROM exam_results;

三、特殊用法示例

  1. 结合聚合函数
SELECT 
    region,
    SUM(CASE WHEN sales_channel = 'ONLINE' THEN revenue ELSE 0 END) AS online_sales,
    SUM(CASE WHEN sales_channel = 'OFFLINE' THEN revenue ELSE 0 END) AS offline_sales
FROM sales
GROUP BY region;
  1. 多层嵌套CASE
SELECT 
    customer_id,
    CASE 
        WHEN account_age < 18 THEN '未成年'
        ELSE 
            CASE 
                WHEN annual_income < 50000 THEN '青年群体'
                ELSE '成熟客户'
            END
    END AS customer_segment
FROM customer_profile;

四、使用注意事项

​​结果类型一致性​​:各分支返回值必须兼容数据类型
​​ELSE子句可选​​:默认返回NULL,建议显式处理未知情况
​​性能优化​​:复杂CASE逻辑可能影响执行计划,必要时可预计算
​​NULL处理​​:建议使用COALESCE处理潜在的空值输入

五、典型错误规避

错误示例:类型不匹配

SELECT CASE WHEN status=1 THEN 'Active' ELSE 0 END FROM users;

-- 正确写法

SELECT CASE WHEN status=1 THEN 'Active' ELSE 'Inactive' END FROM users;

通过合理运用CASE表达式,可实现复杂的数据逻辑处理。建议结合GaussDB的EXPLAIN工具分析执行计划,在保证功能的同时优化查询性能。更多实践案例可参考华为云GaussDB官方文档。

posted @ 2025-05-27 15:06  喜酱喜酱  阅读(1)  评论(0)    收藏  举报