本文来说下case when then中的条件里面加上and or的处理方式。

文章目录

  • 概述
  • 准备数据
  • case when的经典用法
  • case when语句中加上and or的处理方式
  • 本文小结

概述

case when语句,用于计算条件列表并返回多个可能结果表达式之一。CASE 具有两种格式:简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果

如果不知道啥是case when流程控制语句,请看这里case when流程控制语句

case when语句其实就类似java语言中if else语句,就是在sql中控制sql语句的流程。如果想在case when语句中实现更加复杂的业务逻辑,可以加上or和and,其实类似java中的&&和||。只不过一种是在java程序中实现,一种是在sql语句中实现。下面给几个例子来实际感受一下case when语句中加上and or的处理方式。


准备数据

有如下一张用户表,包含如下几个主要的字段

user表包含如下几条数据信息


case when的经典用法

等值转换

在设计数据库的时候总是会把用户的性别用int存储('0’为男,'1’为女),但是怎么把它转换成汉字显示呢?如果性别在配置表中进行了配置,可以两张表关联查询得到。获得在代码中进行if判断,进行转换。那还有没有其他比较好的办法,case when就可以。

sql语句

SELECT ID,
NAME AS '名字',
(CASE sex WHEN 0 THEN '男' ELSE '女' END) AS '性别'
FROM USER;

查询结果


范围转换

有的时候,也会遇到这种情况,按照用户年龄划分为青少年(0-30)、中年(30-60)、老年(60+),这个跟第一个不同的是,他是一个分数的范围,要怎么转换成汉字显示呢?你可能觉得很简单,不就是吧when那换成条件吗?先打住咱们往下看

sql语句

SELECT ID,
NAME AS '名字',
(CASE WHEN age>=60 THEN '老年' WHEN age >= 30 THEN '中年' ELSE '青少年' END) AS '年龄'
FROM USER;

查询结果

列转行操作

比如想统计出北京,上海,天津的男女性各有多少人

SELECT (CASE sex WHEN 0 THEN '男' ELSE '女' END) AS  性别
,SUM(CASE address WHEN '北京' THEN 1 ELSE 0 END) AS  北京
,SUM(CASE address WHEN '上海' THEN 1 ELSE 0 END) AS  上海
,SUM(CASE address WHEN '天津' THEN 1 ELSE 0 END) AS  天津
FROM USER GROUP BY 性别;

查询结果


这里是把地址这个字段进行了列转行的操作,同样可以对性别进行列转行操作,同样可以达到这个目的。


case when语句中加上and or的处理方式

前面统计出北京,上海,天津的男女性各有多少人,如果还想在这个基础上统计北京,上海,天津退休的男女各有多少人,这个应该怎么做。应该在case when语句中加上and来进行处理。

case when语句中加上and的处理方式

sql语句

SELECT (CASE sex WHEN 0 THEN '男' ELSE '女' END) AS  性别
,SUM(CASE address WHEN '北京' THEN 1 ELSE 0 END) AS  北京总人数
,SUM(CASE  WHEN (address ='北京' AND is_retire = 1) THEN 1 ELSE 0 END) AS  北京退休人数
,SUM(CASE address WHEN '上海' THEN 1 ELSE 0 END) AS  上海总人数
,SUM(CASE  WHEN (address ='上海' AND is_retire = 1) THEN 1 ELSE 0 END) AS  上海退休人数
,SUM(CASE address WHEN '天津' THEN 1 ELSE 0 END) AS  天津总人数
,SUM(CASE  WHEN (address ='天津' AND is_retire = 1) THEN 1 ELSE 0 END) AS  天津退休人数
FROM USER GROUP BY 性别;

查询结果

case when语句中加上or的处理方式

接着上面,如果还想统计北京或上海,北京或天津,天津或上海的男女性各有多少人,应该怎么做,这就应该在case when语句中加上or的处理方式

sql语句

SELECT (CASE sex WHEN 0 THEN '男' ELSE '女' END) AS  性别
,SUM(CASE  WHEN (address ='北京' OR address ='上海') THEN 1 ELSE 0 END) AS  北京上海总人数
,SUM(CASE  WHEN (address ='上海' OR address ='天津') THEN 1 ELSE 0 END) AS  上海天津总人数
,SUM(CASE  WHEN (address ='天津' OR address ='北京') THEN 1 ELSE 0 END) AS  天津北京人数
FROM USER GROUP BY 性别;

查询结果


本文小结

本文详细介绍了case when语句中加上and or的处理方式。

case when语句中加上and or的处理方式相关推荐

  1. CASE WHEN语句中加IN应该如何使用

    本文来说下CASE WHEN语句中加IN应该如何使用 文章目录 实例测试 本文小结 实例测试 mysql脚本程序 SELECTIFNULL( COUNT( CASE WHEN T.state IN ( ...

  2. 请在update语句中加上limit

    MySQL版本 mysql-8.0.19-winx64 mysql使用update语句的时候尽量加上limit,误操作风险低 当更新语句中的where字段没有索引的时候,如果没有使用limit的话会锁 ...

  3. Shell中的case in 语句

    case in 的用法 case expression inpattern 1)statement1;;pattern 2)statement2;; --*)statementn esac 其中:ca ...

  4. Shell编程中的case in语句

    1.用法 case expression in path1)执行语句;; path2)执行语句;; path3)执行语句;; *)默认执行语句 esac 2.几点说明 case . in esac 都 ...

  5. 循环和switch语句中的continue、break

    原文:https://www.cnblogs.com/lkprof/p/3475423.html 1. 在switch语句中,"case 常量表达式"只相当于一个语句标号, 表达式 ...

  6. Shell case in语句详解

    和其它编程语言类似,Shell 也支持两种分支结构(选择结构),分别是 if else 语句和 case in 语句.在<Shell if else>一节中我们讲解了 if else 语句 ...

  7. UNION,EXISTS,IN等在SQL语句中的灵活应用和场境的选择。

    今天在QQ群里,有朋友问我这样的一个SQL Server中查询数据的问题, 表 A: num       unit 001        a 002        b 003        c 表 B ...

  8. 在switch语句中,case后的标号只能是什么?

    switch语句用于基于不同条件执行不同动作. 语法格式: switch (变量表达式) { case 常量1: 语句;break; case 常量2: 语句;break; case 常量3: 语句; ...

  9. c语言case标号是连续的吗,在switch语句中,case后的标号只能是什么?_后端开发...

    在switch语句中,case后的标号只能是常量表达式.在一个特定的switch语句中,每一个case常量都必须具有举世无双的值,不能够反复.然则switch语句能够包括多个case标签. switc ...

最新文章

  1. 差分优化算法(DE)matlb源码中文注解
  2. python处理teradata数据库_Teradata数据库——你需要了解的基础知识
  3. 每日一练:Python国内疫情数据爬取与地图绘制
  4. springboot+jpa+mysql+redis+swagger整合步骤
  5. 度微尔开发者联盟网站
  6. 苹果5完美越狱_苹果越狱工具
  7. 建行u盾弹不出来_建行网银不自动跳出网页 建行u盾不能弹出快捷登录
  8. ARM学习(8) axf 工具解析
  9. mybatis plus table doesn't exists
  10. 工业互联网+安全生产 | 面向安全生产的工业互联网解决方案
  11. Windows恢复文件的默认打开方式
  12. 【java初学】static关键字和接口
  13. python随机数产生100个整数(0-100),统计出现次数最多的数字.
  14. [-7170]:Bakres failed to connect DMAP
  15. IDEA java出现无效的源发行版14解决方案
  16. 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
  17. 算法查找,顺序查找,二分查找,分块查找,哈希表查找
  18. Oracle中如何查找未使用绑定变量的SQL语句?
  19. Directshow 视频捕捉入门篇 二
  20. 【Python】快速学会简单使用Python

热门文章

  1. QCon速递:Xen漏洞热补丁修复、异地双活、ODPS新功能与金融互联网
  2. 替换 centOS6.5 默认安装的旧版 firefox ,安装最新版 firefox 全过程
  3. IAM页,IAM链表,分配单元
  4. 今天提交了一个patch开心,呵呵
  5. 编程小技巧(一)——系统性能优化之多次数据库访问处理
  6. Redis配置文件(3)常见的配置修改
  7. MySQL介绍及安装(一)
  8. maven error: element dependency can not have character children
  9. Docker本地私有仓库的建立
  10. php二维数组指定其键名对其排序的方法