mysql case when 控制流函数

是 MySQL 中的一个控制流函数。它用于在查询中执行条件判断,根据某个条件的真假来决定返回哪个值。CASE WHEN的基本语法如下

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    [ELSE resultN]
END

其中,condition1、condition2等表示条件表达式,result1、result2等表示对应条件成立时返回的值。ELSE子句是可选的,当所有条件都不成立时,会返回 ELSE子句中的值。

准备数据

复制代码
-- 创建学生表
CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    score INT
);

-- 插入数据
INSERT INTO students (student_id, name, score) VALUES
    (1, 'Alice', 95),
    (2, 'Bob', 85),
    (3, 'Carol', 65),
    (4, 'David', 40);
复制代码

 以下是一个使用 CASE WHEN的示例。假设我们有一个学生表(students),包含以下字段:student_id(学生 ID)、name(学生姓名)和 score(学生成绩)。我们希望查询每个学生的姓名、成绩以及成绩等级(优秀、良好、及格、不及格)。

示例数据:

student_idnamescore
1 Alice 95
2 Bob 85
3 Carol 65
4 David 40
复制代码
SELECT
    name,
    score,
    -- 使用 CASE WHEN 对成绩进行等级划分
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 80 THEN '良好'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM
    students;
复制代码

查询结果:

namescoregrade
Alice 95 优秀
Bob 85 良好
Carol 65 及格
David 40 不及格

在此示例中,我们使用 CASE WHEN对学生成绩进行等级划分。CASE WHEN语句中的条件从上到下依次判断,当某个条件成立时,返回对应的值(成绩等级)。在这个例子中,当成绩大于等于 90 分时,返回 '优秀';成绩大于等于 80 分时,返回 '良好';成绩大于等于 60 分时,返回 '及格';否则,返回 '不及格'。

 

示例2
查询各分值有多少人
select
sum(case when score >=60 then 1 else 0 end) as 'pass',
sum(case when score >=70 then 1 else 0 end) as 'medium',
sum(case when score >=80 then 1 else 0 end) as 'good',
sum(case when score >=90 then 1 else 0 end) as 'excellent'
from sc;

 

posted @   vincent2023  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示