case 函数语法与使用
case 函数是聚合函数的一种,为统计函数。
case表达式:
- CASE selector
- WHEN value1 THEN action1;
- WHEN value2 THEN action2;
- WHEN value3 THEN action3
一、CASE WHEN 表达式有两种形式
(1)简单Case函数
- CASE sex
- WHEN '1' THEN '男'
- WHEN '2' THEN '女'
- ELSE '其他' END
(2)Case搜索函数
- CASE
- WHEN sex = '1' THEN '男'
- WHEN sex = '2' THEN '女'
- ELSE '其他' END
二、CASE WHEN 应用
学生性别统计student表:
------------查询表中所有的性别
- select ID,
- (case sex
- when '1' then '男'
- when '2' then '女'
- ELSE 'null'
- END) AS '性别',
- province as '省份'
- from `student` ORDER BY `ID` ASC ;
查询结果如下:
-------------查询江苏省与浙江省男生与女生个数分别是多少。
第一种计算方法:以省份区分
- select province AS '江苏省',
- COUNT(case sex
- when '男' THEN '男'
- ELSE null END ) AS '男生',
- COUNT(case sex
- when '女' THEN '女'
- ELSE null END ) AS '女生'
- from `student` where `province` ='江苏'
- UNION
- select province AS '江苏省',
- COUNT(case sex
- when '男' THEN '男'
- ELSE null END ) AS '男生',
- COUNT(case sex
- when '女' THEN '女'
- ELSE null END ) AS '女生'
- from `student` where `province` ='浙江'
查询结果如下:
第二种计算:以性别区分
- select sex,
- COUNT(case province
- when '江苏' THEN '江苏'
- ELSE null END ) AS '江苏省',
- COUNT(case province
- when '浙江' THEN '浙江'
- ELSE null END ) AS '浙江省'
- from `student` group by `sex` ;
查询结果如下:
注意:
COUNT(case province
when '江苏' THEN '江苏'
ELSE null END ) AS '江苏省',
可以简写成:
COUNT( case province when '江苏' THEN '江苏' END ) AS '江苏省'
----------查询各省份的男女数量
- select province ,
- sex,
- COUNT(*) AS '总数'
- from `student` GROUP BY province ,sex
查询结果如下:
----------只统计了浙江省的男女数目
- select
- sex ,
- province,
- count(case province when '江苏' then '江苏' end )as '数量'
- from student group by province, sex;
查询结果如下:
当数据较多时,使用以上数据查询占用大量的资源,因此可以简单写成以下形式:
- select
- sex as '性别' ,
- count(case province when '江苏' then '江苏' end )as '浙江省'
- from student group by sex;
查询结果如下:
补充:
(1)
- select (case province
- when '浙江' then '浙江'
- when '江苏' then '江苏'
- else province end ) as 省份 from student;
else province 默认为除浙江、江苏 外显示其他城市
(2) case when 可以跟不相等的判断。
可用于=,>=,<,<=,<>,is null,is not null 等的判断。
如:
三、CASE WHEN 与 DECODE 比较
1,DECODE Oracle 特有;
2,CASE WHEN Oracle , SQL Server, MySQL 都可用;
3,DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,
CASE 可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4,DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;
case 函数语法与使用的更多相关文章
- Case when 的用法,简单Case函数
Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...
- Swift之函数语法详解
函数 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被“调用”. Swift 统一的函数语法足够灵活,可以用来表示任何函数 ...
- SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程
SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
CASE函数 作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...
- Mysql 常用函数(4)- case 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html case 的作用 if 的高级版,类似Java 里 ...
- sum 函数语法与应用
一.sum 函数语法: SELECT SUM(expression ) FROM tables WHERE predicates; expression 常量.列或函数,或者是算术.按位与字 ...
- SQL变量、Substring、charindex、case函数、去除重复
isnull(aa,0)删除表数据: truncate table aaa 添加字段: ALTER TABLE table1 ADD col1 varchar(200) DEFAULT '2008 ...
- Linux下多进程编程之exec函数语法及使用实例
exec函数族 1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的进程如何执行呢?exec函数族就提供了一个在进程中启动另一个程序执行的 ...
- Shell函数语法
Shell函数语法 定义函数: function 函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名 参数一 参数二 return在函数里面使用会跳出函数并 ...
随机推荐
- suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...
- Python基础—基础数据类型list(Day4)
基础数据类型 四.list列表 存放大量数据,大量的数据在列表中便于操作,列表示有序的,有索引值,可切片,方便取值. 1.list的增 1).append('元素') 在列表后面按元素添加 ...
- Dubbo扩展点应用之四线程池
线程池也是Dubbo自动自适应扩展点之一,也可以自定义线程池.Dubbo中已实现的线程池扩展点有: 其中框架提供的线程池都是通过创建真实的业务线程池进行操作的,目前线程池模型中有两个和Java中线程池 ...
- splunk设置索引周期和索引大小
步骤一: 编辑/opt/splunk/etc/apps/search/local/indexs.conf ,在每个索引下面 加入最后两行内容 [messages] coldPath = $SPLUNK ...
- [VSCode] Todo Tree VSCode插件 待办事项树
Todo Tree 一款待办事项插件 我们写程序的时候,难免会遇到一些情况需要标记或者搁置,在写代码的时候会用一些特殊的注释来表示不同的内容,使我们可以快速的定位我们注释的位置. 主要有以下几种: T ...
- kali linux 出现 E: 您在 /var/cache/apt/archives/ 上没有足够的可用空间。
问题: E: 您在 /var/cache/apt/archives/ 上没有足够的可用空间. 软链接到HOME下的一个目录即可,home下新建debs文件夹: 在某个空间大的分区建立一个目录,然后把/ ...
- 可视化BI工具选型,应该注意什么
伴随着大数据时代的到来,企业对数据的需求从"IT主导的报表模式"转向"业务主导的自助分析模式",可视化BI工具也随之应运而生.面对如此众多的可视化BI工具,我 ...
- 赶紧收藏!最好用的BI工具都在这了!
1.bi厂商--思迈特软件Smartbi 广州思迈特软件有限公司成立于2011 年,以提升和挖掘企业客户的数据价值为使命,专注于商业智能与大数据分析软件产品与服务.思迈特软件是国家认定的"高 ...
- LSMT 实战-python
长短期记忆网络(LSTM,Long Short-Term Memory) 使用kears 搭建一个LSTM预测模型,使用2022年美国大学生数学建模大赛中C题中处理后的BTC比特币的数据进行数据训练和 ...
- XStart远程连接Linux图形化界面
转至:https://zhuanlan.zhihu.com/p/337791712 场景: 因在Linux中安装Oracle11g 需要调用Oracle的图形化界面,此时在宿主机上安装了 Xmanag ...