SQL:case函数的详细用法

CASE 函数可以用于对数据进行复杂的条件判断和转换,在数据清洗和处理过程中具有重要的作用。它允许您根据给定的条件对一个或多个表达式进行条件判断,并返回相应的结果。分为:

1. 简单CASE函数

它的语法如下:

CASE expression  
    WHEN value1 THEN result1  
    WHEN value2 THEN result2  
    ...  
    ELSE result  
END

这里的expression是您要检查的表达式,value1、value2等是可能的值,result1、result2等是对应的结果。如果expression的值等于某个值,CASE函数将返回对应的结果。

2. 搜索CASE函数

它的语法如下:

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

这里的condition1、condition2等是条件,result1、result2等是对应的结果。第一个满足的条件将被返回。如果没有任何条件满足,ELSE子句中的默认结果将被返回。

3. 常见使用场景

例1: 查询班级表中的学生的班号、班名、系号和班主任号,并对系号作如下处理:
当系号为1时,显示 “计算机系”;
当系号为2时,显示 “软件工程系”;
当系号为3时,显示 “物联网系”。

简单case函数:

SELECT
    班号,
    班名,
    CASE
        系号
        WHEN 1 THEN '软件工程系'
        WHEN 2 THEN '计算机系'
        WHEN 3 THEN '物联网系'
    END AS 系号,
    班主任号
FROM
    班级表

搜索case函数: 

SELECT
    班号,
    班名,
    CASE
        WHEN 系号 = 1 THEN '软件工程系'
        WHEN 系号 = 2 THEN '计算机系'
        WHEN 系号 = 3 THEN '物联网系'
    END AS 系号,
    班主任号
FROM
    班级表

例2.统计每个班男生和女生的数量各是多少,统计结果的表头为:班号,男生数量,女生数量。

SELECT
    班号,
    COUNT(
        CASE
            WHEN 性别 = '男' THEN '男'
        END
    ) 男生数,
    COUNT(
        CASE
            WHEN 性别 = '女' THEN '女'
        END
    ) 女生数
FROM
    学生表
GROUP BY
    班号

例3.判断成绩的等级,85-100为“优”,70-84为“良”,60-69为“及格”,60以下为“不及格”,并统计每一等级的人数。

SELECT
    CASE
        WHEN GRADE BETWEEN 85 AND 100  THEN '优'
        WHEN GRADE BETWEEN 70 AND 84  THEN '良'
        WHEN GRADE BETWEEN 60 AND 69  THEN '及格'
        ELSE '不及格'
    END 等级,
    COUNT(*) 人数
FROM
    SC
GROUP BY
    CASE
        WHEN GRADE BETWEEN 85 AND 100  THEN '优'
        WHEN GRADE BETWEEN 70 AND 84  THEN '良'
        WHEN GRADE BETWEEN 60 AND 69  THEN '及格'
        ELSE '不及格'
    END

或

SELECT
    grade AS '等级',
    count(*) AS '人数'
FROM
    (
        SELECT
            CASE
                WHEN GRADE BETWEEN 85 AND 100  THEN '优'
                WHEN GRADE BETWEEN 70 AND 84  THEN '良'
                WHEN GRADE BETWEEN 60 AND 69  THEN '及格'
                ELSE '不及格'
            END AS grade
        FROM
            SC
    ) a
GROUP BY
    grade

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值