case when(Case When 使用实例)

Case When 使用实例

Case When 是一种逻辑函数,在编写 SQL 查询时经常使用。它允许我们根据特定的条件返回不同的值。在这篇文章中,我们将介绍 Case When 的使用,并给出一些实际的案例。

基本语法

在 SQL 中,Case When 是一种条件表达式,可以根据特定的条件返回不同的值。它的基本语法如下:

``` CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE result END ```

condition1, condition2,... 是一些条件表达式,可以是列名、函数,也可以是常量。当某个条件为真时,会返回对应的结果。当所有条件都不满足时,可以使用 ELSE 子句指定默认的结果。

示例1:根据成绩等级分类

假设有一张学生表,包含学生姓名和成绩两列。我们想要根据成绩的不同等级对学生进行分类,将 A、B、C、D 等级用字符表示出来。

``` SELECT student_name, CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' WHEN score >= 70 THEN 'C' WHEN score >= 60 THEN 'D' ELSE 'E' END AS grade FROM students; ```

在这个示例中,我们使用了 Case When 来根据不同的分数范围返回对应的等级。如果分数大于等于 90,返回 A;如果分数大于等于 80,返回 B;以此类推。如果分数小于 60,返回 E。

示例2:根据订单状态展示不同的文字

假设有一个订单表,存储了订单号、订单价格和订单状态。我们想要根据订单状态的不同,展示不同的文字。

``` SELECT order_id, order_price, CASE WHEN order_status = 'NEW' THEN '新订单' WHEN order_status = 'PROCESSING' THEN '处理中' WHEN order_status = 'SHIPPED' THEN '已发货' WHEN order_status = 'COMPLETED' THEN '已完成' ELSE '未知状态' END AS status_description FROM orders; ```

在这个示例中,我们根据订单的不同状态返回对应的文字描述。如果订单状态为 NEW,返回 '新订单';如果订单状态为 PROCESSING,返回 '处理中';以此类推。如果订单状态不是预设的值,返回 '未知状态'。

示例3:根据用户年龄分组计算平均工资

假设有一个员工表,记录了员工姓名、年龄和工资信息。我们想要根据员工的年龄分组,并计算每个年龄段的平均工资。

``` SELECT age, CASE WHEN age BETWEEN 20 AND 30 THEN '20-30 岁' WHEN age BETWEEN 31 AND 40 THEN '31-40 岁' WHEN age BETWEEN 41 AND 50 THEN '41-50 岁' ELSE '其他年龄段' END AS age_group, AVG(salary) AS average_salary FROM employees GROUP BY age_group; ```

在这个示例中,我们使用了 Case When 来根据员工的年龄分组。如果年龄在 20 到 30 岁之间,分组为 '20-30 岁';如果年龄在 31 到 40 岁之间,分组为 '31-40 岁';以此类推。对每个年龄段的工资求平均值。

总结

Case When 是一种非常有用的逻辑函数,可以根据不同的条件返回不同的值。它可以在 SQL 查询中灵活应用,帮助我们更加精确地处理数据。

在本文中,我们介绍了 Case When 的基本语法,并给出了几个实际的使用示例。根据成绩等级分类、根据订单状态展示文字描述、根据用户年龄分组计算平均工资等。

希望本文对你理解和使用 Case When 有所帮助,同时也希望你在编写 SQL 查询时能更加灵活和高效地运用这个强大的函数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如有侵权请联系网站管理员删除,联系邮箱3237157959@qq.com。
0