sql语句中的case when,sql使用case when

sql语句中的case when,sql使用case when,一篇文章带你了解SQL之CASE WHEN用法详解

本文介绍了case when语句在mysql数据库中的用法,介绍了case when语句的基础知识,并提供了相关实例供大家参考。有需要的朋友不要错过。

目录

简单CASE WHEN函数:等价于,使用CASE WHEN条件表达式函数实现:THEN之后的值要和ELSE之后的值类型一致,否则报错。如下:总结

简单CASE WHEN函数:

当“A”然后“优秀”否则“失败”结束时的案例分数

当“B”然后“好”否则“失败”结束时的案例分数

“ELSE”在“C”然后“failed”结束时的情况评分

等同于,使用CASE WHEN条件表达式函数实现:

得分=“A”然后是“优秀”的情况

当分数=B时,则为“好”

当SCORE= C THEN in ELSE failed END

THEN后边的值与ELSE后边的值类型应一致,否则会报错。如下:

当“A”然后是“优秀”时的案例分数,否则0结束

如果“优秀”和0的数据类型不一致,将会报告错误:

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

简单CASE WHEN函数只能处理一些简单的业务场景,而CASE WHEN条件表达式的编写规则更加灵活。

CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。

格式:

条件随后产生的情况

[什么时候.然后.]

否则结果

结束

Condition是返回布尔类型的表达式。如果表达式返回true,则整个函数返回相应结果的值。如果表达式都为假,则返回ElSE之后的结果值。如果省略ELSE子句,则返回NULL。

以下是一些常见的场景。

场景1:有了分数,分数60返回失败,分数=60返回通过,分数=80返回优秀。

挑选

学生姓名,

(分数为60时,则“失败”

当得分=60且得分为80时,则“通过”

当得分=80时,则为“优秀”

ELSE“异常”结束)作为注释

桌子

注意

:如果要判断分数是否为空,当score=null时则为‘缺考’,这是一种错误的写法。正确的写法应该是:

如果分数为空,则“缺席考试”,否则“正常”结束

场景二:现在老师要统计班上有多少男生女生,统计多少男生女生考上了,多少女生考上了。需要使用SQL来输出结果。

表格的结构如下:在STU_SEX字段中,0代表男生,1代表女生。

STU _代码

斯图_姓名

斯图_性

斯图分数

执行节点

小明

0

88

特大号

肖磊

0

55

藏窖年份75年以上)

晓凤

0

45

超高的

小红

一个

66

数列

小妮

一个

77

正常男性染色体组型

孝义

一个

99

挑选

STU _ SEX=0 TH ELSE 0 END时的情况)作为男性计数,

STU _ SEX=1 TH ELSE 0 END时的情况)作为FEMALE_COUNT,

SUM(STU _ SCORE=60且STU_SEX=0 THEN 1 ELSE 0结束时的情况)作为MALE_PASS,

SUM(STU _ SCORE=60且STU_SEX=1 THEN 1 ELSE 0 END时的情况)作为FEMALE_PASS

THTF _学生

输出结果如下:

男性_计数

女性_计数

男性通行证

女性_通行证

一个

场景3:经典的行转换成列,用聚合函数进行统计。

要求统计每个城市的总用水量、用电量、耗热量,用一条SQL语句输出结果。

能耗表如下:E_TYPE表示能耗类型,0表示水耗,1表示电耗,2表示热耗。

电子代码

电子值

电子类型

北京

28.50

0

北京

23.51

一个

北京

28.12

2

北京

12.30

0

北京

15.46

一个

上海

18.88

0

上海

16.66

上海

19.99

0

上海

10.05

0

挑选

E_CODE,

总和(当E_TYPE=0时,电子值为0,否则结束)作为水_能量,-水耗

总和(当E_TYPE=1时,则电子值否则0结束)为ELE _能量,-电耗

总和(当E_TYPE=2时,电子值否则0结束)为热能-热耗

THTF能源测试

分组依据

电子代码

输出结果如下

:

电子代码

水能

ELE能源

热能

北京

40.80

38.97

28.12

上海

48.92

16.66

0

场景4:CASE WHEN中使用子查询

根据城市用电量多少,计算用电成本。假设电能耗单价分为三档,根据不同的能耗值,使用相应价格计算成本。

价格表如下:

p _价格

p级

p _极限

1.20

0

10

1.70

30

2.50

2

50

当能耗值小于10时,使用P_LEVEL=0时的p _价格的值,能耗值大于10小于30使用P_LEVEL=1时的p _价格的值.

能量=(SELECT P _ LIMIT FROM TABLE _ PRICE,其中P_LEVEL=0)那么(从TABLE _ PRICE中选择P _ PRICE,其中P _ LEVEL=0)的情况

当能量(从表格_价格中选择P_LIMIT,其中P_LEVEL=0)和能量=(从表格_价格中选择P_LIMIT,其中P_LEVEL=1)那么(从表格_价格中选择P_PRICE,其中P_LEVEL=1)

当能量(从表格_价格中选择P_LIMIT,其中P_LEVEL=1)和能量=(从表格_价格中选择P_LIMIT,其中P_LEVEL=2)那么(从表格_价格中选择P_PRICE,其中P_LEVEL=2)

场景5:结合最大聚合函数

什么情况下函数使用起来简单易懂,此篇文章只作了简单的使用介绍,还需在实际工作中根据业务场景不同来灵活使用。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

sql语句中的case when,sql使用case when