简单的使用CASE WHEN

CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END
CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END
CASE 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 REMARK
FROMTABLE

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

STU_CODE STU_NAME STU_SEX STU_SCORE
XM 小明 0 88
XL 小磊 0 55
XF 小峰 0 45
XH 小红 1 66
XN 晓妮 1 77
XY 小伊 1 99
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_pass
from students

结果

MALE_COUNT FEMALE_COUNT MALE_PASS FEMALE_PASS
3 3 1 3

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

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

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

E_CODE E_VALUE E_TYPE
北京 28.50 0
北京 23.51 1
北京 28.12 2
北京 12.30 0
北京 15.46 1
上海 18.88 0
上海 16.66 1
上海 19.99 0
上海 10.05 0
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

输出结果:

E_CODE WATER_ENERGY ELE_ENERGY HEAT_ENERGY
北京 40.80 38.97 28.12
上海 48.92 16.66 0

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

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

价格表如下:

P_PRICE P_LEVEL P_LIMIT
1.20 0 10
1.70 1 30
2.50 2 50

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

博客转自:https://blog.csdn.net/rongtaoup/article/details/82183743

mysql中使用CASE WHEN相关推荐

  1. MySQL中使用CASE出错,如何在MySQL中正确使用CASE..WHEN

    如何在MySQL中正确使用CASE..WHEN 这里是一个演示查询,注意它非常简单,仅在base_price为0的位置获取,并且仍然select条件3: SELECT CASE course_enro ...

  2. mysql中的case when 与if else

    在sql中,能用if else  就不用case  when 下面来看看,具体为什么,没有搞清楚,如果有大神知道的提供下资料: Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用 ...

  3. mysql 中的case when 和ifnull判断

    mysql 在查询和更新sql中都可以进行判断,下面根据我这两条sql看下case when和ifnull的用法: case when update t_tradefee set margin_pro ...

  4. mysql中使用case when语句

    在web开发过程中,很多时候良好的sql不仅可以加快数据响应时间,更重要可以省略大量的后端代码.比如说对大量数据的分组,统计(求和,求差,求平均,求百分比等等),排序,如果可以放到sql里面去做,还是 ...

  5. MYSQL 中的 case when 用法

    MySQL 的 case when 的语法有两种 简单函数  CASE [col_name] WHEN [value1] THEN [result1]-ELSE [default] END 搜索函数  ...

  6. mysql中的case when then使用

    CASE DAYOFWEEK(s_date)     WHEN 1 THEN '星期一'     WHEN 2 THEN '星期二'     WHEN 3 THEN '星期三'     WHEN 4 ...

  7. concat函数_三、P57-61 MySQL中常用函数

    本部分主要讲解MySQL数据库中常用函数的使用. P57 SQL中的函数类型:字符串函数.数值函数.日期和时间函数.流程函数.其他常用函数: P58 第1部分:字符串函数 1.concat函数 con ...

  8. MySQL自定义函数的使用及MySQL中的流程控制语句

    MySQL自定义函数 文章目录 MySQL自定义函数 创建自定义函数 自定义函数的调用 自定义函数的删除 自定义函数的维护 流程控制语句 条件控制语句 循环语句 创建自定义函数 创建自定义函数时, 开 ...

  9. MySQL 入门:Case 语句很好用

    引言 MySQL CASE 是一个 MySQL 语句查询关键字,它定义了处理循环概念以执行条件集并使用 IF ELSE 返回匹配案例的方式. MySQL 中的 CASE 是一种控制语句,它验证条件案例 ...

最新文章

  1. python之setdefault()和defaultdict()处理缺失值的键
  2. SourceProvider.getJniDirectories
  3. mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
  4. 解决w3wp.exe内存占用问题[转载]
  5. python连接oracle报错tns_Python3操作oracle数据库及遇到的报错
  6. win7下import pytorch报错AttributeError: function 'AddDllDirectory' not found
  7. awvs10安装过程,实际操作过程
  8. 打开量化交易的黑箱——note1
  9. jQuery表格新增行
  10. 网站建设对企业的好处有哪些?
  11. 【uniapp】小程序添加通过卡号查找银行名并添加绑定等逻辑
  12. sql:mysql:数据库优化
  13. String 源码浅析————终结篇
  14. Git问题Everything up-to-date正确解决方法
  15. 重装系统win7教程
  16. Typora修改图片保存位置
  17. 2020版本idea 左视图跟随主视图定位操作
  18. 中国跨境电商现状及发展前景
  19. python下载是免费的吗-关于python下载imooc的免费视频的方法
  20. stm32wb55 基于rtt的ble sample制作过程

热门文章

  1. CF1497D Genius
  2. 不止代码 洛谷P1006 传纸条(dp)
  3. jzoj5248-[NOIP2017提高A组模拟8.10]花花的聚会【倍增,树形dp】
  4. P1463-[POI2002][HAOI2007]反素数【约数,数论】
  5. POJ3208-Apocalypse Someday【数位dp】
  6. ssl1776-游乐场【图论,深搜】
  7. 【并查集】小 X 的液体混合
  8. 练习利用LSTM实现手写数字分类任务
  9. L2-016 愿天下有情人都是失散多年的兄妹 CCCC
  10. Dubbo(二)之SpringBoot nacos集成