SQL中CASE WHEN THEN ELSE END的用法详解

简介: SQL中CASE WHEN THEN ELSE END的用法详解

SQL中CASE WHEN THEN ELSE END的用法详解

在数据库查询语言SQL中,有一种强大的条件表达式 CASE WHEN THEN ELSE END,它为我们提供了在查询过程中进行条件判断和结果返回的灵活性。本文将深入探讨 CASE WHEN THEN ELSE END 的用法,助你在SQL查询中游刃有余。


1. CASE WHEN THEN ELSE END的基本语法

CASE WHEN THEN ELSE END 是SQL中用于条件判断的表达式,其基本语法如下:

SELECT
  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
  END
FROM table;
  • condition1, condition2, …:条件表达式,当满足某个条件时执行对应的 result
  • result1, result2, …:满足相应条件时返回的结果。
  • ELSE default_result:可选项,当所有条件都不满足时返回的默认结果。

2. 简单示例

让我们通过一个简单的示例来说明 CASE WHEN THEN ELSE END 的用法。假设有一个员工表,我们想根据员工的薪水水平给予不同的评价。

SELECT
  employee_name,
  salary,
  CASE
    WHEN salary > 50000 THEN '高薪水'
    WHEN salary > 30000 THEN '中薪水'
    ELSE '低薪水'
  END AS salary_evaluation
FROM employees;

在上述示例中,我们使用了 CASE WHEN THEN ELSE END 来根据员工的薪水水平进行评价,将不同薪水水平的员工分为“高薪水”、“中薪水”和“低薪水”三个类别。

3. 多条件判断

CASE WHEN THEN ELSE END 还支持多条件判断,可以根据需要增加更多的 WHEN 子句。例如,我们想对员工的薪水水平和工作地点进行综合评价。

SELECT
  employee_name,
  salary,
  CASE
    WHEN salary > 50000 AND location = '北京' THEN '高薪高地'
    WHEN salary > 50000 AND location = '上海' THEN '高薪高地'
    WHEN salary > 30000 THEN '中薪水'
    ELSE '低薪水'
  END AS salary_location_evaluation
FROM employees;

在这个示例中,我们通过增加 AND location = '北京'AND location = '上海' 的条件,实现了对薪水水平和工作地点的联合评价。

4. 使用CASE进行计算

除了简单的条件判断,CASE WHEN THEN ELSE END 还可以进行计算,生成更加复杂的结果。例如,我们想计算员工的绩效奖金。

SELECT
  employee_name,
  salary,
  CASE
    WHEN performance_rating = '优秀' THEN salary * 0.2
    WHEN performance_rating = '良好' THEN salary * 0.1
    ELSE salary * 0.05
  END AS performance_bonus
FROM employees;

在上述示例中,我们根据员工的绩效评级计算了不同绩效等级的奖金,以更精细地反映员工的绩效表现。

5. CASE与聚合函数的结合

CASE WHEN THEN ELSE END 还常常与聚合函数一同使用,实现对数据的更精细的汇总和分类。例如,我们想统计不同薪水水平的员工数量。

SELECT
  CASE
    WHEN salary > 50000 THEN '高薪水'
    WHEN salary > 30000 THEN '中薪水'
    ELSE '低薪水'
  END AS salary_level,
  COUNT(*) AS employee_count
FROM employees
GROUP BY salary_level;

在这个例子中,我们使用 CASE WHEN THEN ELSE END 将员工分为不同的薪水水平,并通过 COUNT(*) 统计每个水平的员工数量,实现了对员工薪水水平的汇总统计。

6. 嵌套CASE语句

在一些复杂的场景中,可能需要嵌套使用 CASE WHEN THEN ELSE END 语句,以实现更多层次的条件判断。例如,我们想根据员工的薪水和绩效评级分别进行评价。

SELECT
  employee_name,
  salary,
  CASE
    WHEN salary
 > 50000 THEN
      CASE
        WHEN performance_rating = '优秀' THEN '高薪优秀'
        WHEN performance_rating = '良好' THEN '高薪良好'
        ELSE '高薪一般'
      END
    WHEN salary > 30000 THEN
      CASE
        WHEN performance_rating = '优秀' THEN '中薪优秀'
        WHEN performance_rating = '良好' THEN '中薪良好'
        ELSE '中薪一般'
      END
    ELSE
      CASE
        WHEN performance_rating = '优秀' THEN '低薪优秀'
        WHEN performance_rating = '良好' THEN '低薪良好'
        ELSE '低薪一般'
      END
  END AS salary_performance_evaluation
FROM employees;

7. CASE WHEN的注意事项

  • CASE WHEN THEN ELSE END 可以用于任何SQL语句中,包括 SELECTWHEREORDER BY 等。
  • 当条件判断较为简单时,可以使用 CASE WHEN 的缩写形式 CASE column_name WHEN value THEN result END

8. 实际应用案例

让我们通过一个实际的应用案例来演示 CASE WHEN THEN ELSE END 的用法:

SELECT
  product_name,
  price,
  CASE
    WHEN price > 1000 THEN '高价商品'
    WHEN price > 500 THEN '中价商品'
    ELSE '低价商品'
  END AS price_category
FROM products;

9. 总结

CASE WHEN THEN ELSE END 是SQL中强大的条件表达式,为我们在查询过程中提供了灵活的条件判断和结果返回方式。通过本文的详细解析,相信你对 CASE WHEN THEN ELSE END 已经有了更深入的理解。

相关文章
|
3月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何在SQL语句里使用CASE WHEN语句
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
SQL Java 数据库连接
SQL SELECT语句的基本用法
SQL SELECT语句的基本用法
|
2月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
2月前
|
SQL 存储 安全
SQL Server用法
SQL Server用法
65 1
|
2月前
|
SQL
SQL: 巧妙使用CASE WHEN实现查询
文章演示了如何利用SQL中的CASE WHEN语句来有效地进行条件性聚合查询,通过具体示例展示了CASE WHEN在统计分析中的应用技巧。
66 0
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
44 1
|
3月前
|
SQL 关系型数据库 MySQL
8、SQL高级用法
8、SQL高级用法
19 0
|
5月前
|
SQL
SQL语句case when then else end用法
SQL语句case when then else end用法
|
4月前
|
SQL Java 数据库连接
SQL SELECT语句的基本用法
SQL SELECT语句的基本用法
|
4月前
|
SQL 数据采集 BI
SQL CASE WHEN语句详解
SQL CASE WHEN语句详解

热门文章

最新文章