1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql中使用CASE WHEN

mysql中使用CASE WHEN

时间:2024-07-15 13:17:55

相关推荐

mysql中使用CASE WHEN

简单的使用CASE WHEN

CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' ENDCASE SCORE WHEN 'B' THEN '良' ELSE '不及格' ENDCASE SCORE WHEN 'C' THEN '中' ELSE '不及格' END

上面的sql等同于

CASE SCORE WHEN 'A' THEN '优' WHEN 'B' THEN '良' WHEN 'C' THEN '中' ELSE '不及格' END

THEN后面的值与ELSE后面的值类型应一致,否则报错:

CASE SCORE WHEN 'A' THEN '优' ELSE 0 END

'优’和0不一致会报错。

引申出几种常用场景

场景1 :有分数score,score<60返回不及格,score>=60返回及格,score>=80返回优秀

SELECTSTUDENT_NAME,(CASE WHEN score < 60 THEN '不及格'WHEN score >= 60 AND score < 80 THEN '及格'WHEN score >= 80 THEN '优秀'ELSE '异常' END) AS REMARKFROMTABLE

场景2:现老师要统计班中,有多少男同学,多少女同学,并统计男同学有几人及格,女同学有几人及格,要求写一个sql输出结果。表结构如下,stu_sex,0表示男生,1表示女生

select sum(case when stu_sex=0 then 1 else 0) male_sum,sum(case when stu_sex=1 then 1 else 0) female_sum,sum(case when stu_sex=0 and stu_score>=60 then 1 else 0) male_pass,sum(case when stu_sex=1 and stu_score>=60 then 1 else 0) female_passfrom students

结果

场景3:经典行转列,并配合聚合函数做统计

现要求统计各个城市,总共使用了水耗、电耗、热耗,使用一条sql输出

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

select E_CODE, E_VALUE,(case when E_TYPE = 0 then E_VALUE ELSE 0 END) WATER_ENERGY, -- 水能(case when E_TYPE = 1 then E_VALUE ELSE 0 END) ELE_ENERGY,-- 电能(case when E_TYPE = 2 then E_VALUE ELSE 0 END) HEAT_ENERGY -- 热能from ENEGEY group by E_CODE

输出结果:

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

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

价格表如下:

我只转了前面几个实用且效率会比较高的例子,觉得这篇文章解释的很到位,博客原文在这里

博客转自:/rongtaoup/article/details/82183743

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。