MySQL中的CASE WHEN语句使用详解

MySQL中的CASE WHEN语句使用详解

MySQL中的CASE WHEN语句使用详解

在MySQL中,CASE WHEN语句是一种灵活的条件语句,它可以根据条件的满足情况返回不同的结果。在实际开发中,CASE WHEN语句通常用于数据分析、报表生成等场景,可以根据不同条件对数据进行分组、计算等操作。本文将详细介绍MySQL中CASE WHEN语句的用法和示例。

语法格式

CASE WHEN语句的基本语法格式如下所示:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

其中,condition1condition2等为条件表达式,result1result2为满足条件时的返回结果,default_result为默认返回结果。CASE WHEN语句按顺序逐个判断条件表达式,如果某个条件表达式满足,则返回对应的结果。如果所有条件都不满足,则返回默认结果。

示例

接下来通过几个示例来展示CASE WHEN语句的使用方式。

  1. 查询员工的薪资等级,根据薪资区间划分:
SELECT
    emp_no,
    salary,
    CASE
        WHEN salary < 3000 THEN '低薪'
        WHEN salary >= 3000 AND salary < 6000 THEN '中薪'
        ELSE '高薪'
    END AS salary_level
FROM
    employees;

执行以上SQL语句,可以根据员工的薪资水平将其划分为低薪、中薪和高薪三个等级,并返回对应的结果。

  1. 统计各部门男女员工的人数:
SELECT
    dept_no,
    COUNT(*) AS total_count,
    SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
    SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count
FROM
    employees
GROUP BY
    dept_no;

在上述示例中,通过CASE WHEN语句统计了各个部门男女员工的人数,并返回对应的结果。

  1. 统计各个年龄段的员工数量:
SELECT
    CASE
        WHEN age < 30 THEN '30岁以下'
        WHEN age >= 30 AND age < 40 THEN '30-39岁'
        WHEN age >= 40 AND age < 50 THEN '40-49岁'
        ELSE '50岁以上'
    END AS age_group,
    COUNT(*) AS total_count
FROM
    employees
GROUP BY
    age_group;

执行以上SQL语句,可以根据员工的年龄将其划分为不同的年龄段,并统计各个年龄段的员工数量。

  1. 计算各部门员工的平均薪资:
SELECT
    dept_no,
    AVG(CASE WHEN gender = 'M' THEN salary ELSE NULL END) AS male_avg_salary,
    AVG(CASE WHEN gender = 'F' THEN salary ELSE NULL END) AS female_avg_salary
FROM
    employees
GROUP BY
    dept_no;

在上述示例中,通过CASE WHEN语句计算了各个部门男女员工的平均薪资,并返回对应的结果。

小结

通过上述示例,我们可以看到CASE WHEN语句在MySQL中的强大功能。它可以灵活地根据条件返回不同的结果,适用于各种数据分析和报表生成的场景。在实际开发中,我们可以结合CASE WHEN语句与其他SQL语句一起使用,实现更多复杂的数据处理需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程