SQL里的多条件判断Case When Then(类似EXCEL里的IFS)

SQL里的多条件判断Case When Then(类似EXCEL里的IFS),第1张

SQL里类似EXCEL里的IFS的多条件判断—— Case When Then

基本格式:

Case可分为2种: 简单Case函数 和 Case搜索函数 。

例如:

SELECT SC.CId,

SUM( CASE WHEN SC.score>=60 THEN 1 ELSE 0 END )/COUNT(*)AS 及格率,

SUM( CASE WHEN SC.score>=70 AND SC.score<80 THEN 1 ELSE 0 END )/COUNT(*)AS 中等率,

SUM( CASE WHEN SC.score>=80 AND SC.score<90 and SC.score<80 THEN 1 ELSE 0 END )/COUNT(*)AS 优良率,

SUM( CASE WHEN SC.score>=90 THEN 1 ELSE 0 END )/COUNT(*)AS 优秀率

FROM SC

GROUP BY SC.CId

不能,case后面是常量表达式

--------------------------------------------------------------------------------

switch(表达式)

{

case 常量表达式1:

语句1

break

case 常量表达式2:

语句2

break

……

case 常量表达式n:

语句n

break

default:

语句n+1

break

}

--------------------------------------------------------------------------------

switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1

select sum(case when end_km<5000 then 1 else 0 end) as [小于0.5万公里],

sum(case when end_km>=5000 and end_km<15000 then 1 else 0 end) as [0.5万到1.5万公里],

sum(case when end_km>=15000 and end_km<20000 then 1 else 0 end) as [1.5万到2万公里],

sum(case when end_km>=20000 and end_km<25000 then 1 else 0 end) as [2万到2.5万公里],

sum(case when end_km>=25000 and end_km<30000 then 1 else 0 end) as [2.5万到3万公里],

sum(case when end_km>=30000 then 1 else 0 end) as [2.5万到3万公里]

from 表名

as别名那地方,看你具体是什么数据库了,sqlserver或access的话就像我这么写,oracle的话,将[]换成一对双引号(英文写法滴),mysql的话将[]换成这个``(上边数字键1左边那个键)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11737840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存