基本格式:
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左边那个键)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)