sql CASE WEN 函数

一、含义

        case when 相当于 java 语言中的 if {} esle {} 判断、switch case 语句。该语句执行时,先对条件进行判断,然后根据判断结果进行响应的操作。

        Case 有两种格式:简单Case函数 和 Case搜索函数

简单Case 函数:

CASE num

WHEN '1' THEN '小学生'

WHEN '2' THEN '中学生'

WHEN '3' THEN '高中生'

WHEN '4' THEN '大学生'

ELSE ‘未知错误’ END

Case 搜索函数:

CASE 

WHEN num = '1' THEN '小学生'

WHEN num = '2' THEN '中学生'

WHEN num = '3' THEN '高中生'

WHEN num = '4' THEN '大学生'

ELSE ‘未知错误’ END

THEN 后边的值应与ELSE的值类型相同,否则会报错,如下:

CASE SCORE WHEN '1' THEN '小学生' ELSE 0 END

'优'和0数据类型不一致则报错: 

[Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER

二、示例

老师要统计班中有多少男生,多少女生,及格的男生有多少,及格的女生有多少

表结构如下:其中STU_SEX字段,0表示男生,1表示女生。

STU_IDSTU_NAMESTU_SEXSTU_SCORE
1a088
2b055
3c045
4d166
5e177
6f188

查询语句如下:

SELECT 
	SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,
	SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS
FROM 
	THTF_STUDENTS

输出:

MALE_COUNTFEMALE_COUNTMALE_PASSFEMALE_PASS
3313

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值