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在函数里面使用会跳出函数并 ...
随机推荐
- Solution -「ABC 213H」Stroll
\(\mathcal{Description}\) Link. 给定一个含 \(n\) 个结点 \(m\) 条边的简单无向图,每条边的边权是一个常数项为 \(0\) 的 \(T\) 次多项式, ...
- linux 利用python模块实现格式化json
非json格式示例 {"name": "chen2ha", "where": {"country": "Chi ...
- ios开发 Pods工具心得
Pods 这也是我的第一篇微博,希望能给大家带来帮助,也便于我自己温习 第一步:新建一个xcode项目(这个不解释了) 第二步:打开终端(剩下的操作都在终端里面了)
- windows server 2016 2019修改远程端口操作
一.修改3389远程端口 1,按"win+r"快捷键,在对话框中输入regedit 2, 找到路径 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro ...
- 截图工具snipaste
下载地址: https://zh.snipaste.com/download.html 使用: 按F1截图,截图后按F3悬浮
- PCL库在Linux环境下的编译安装
PCL库在Linux环境下的编译安装 PCL库的源码库:https://github.com/PointCloudLibrary/pcl 下载完了之后解压下来 编译库的几个步骤 mkdir build ...
- Python:GUI库tkinter(二)
学习自: Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) - 洪卫 - 博客园 Tkinter简明教程 - 知乎 TkDocs_官方文档 一个Tkinter库较为全面的总结,很 ...
- 统信DTK开发套件应用技术分享
近年来,信创产业发展迅猛,国产软硬件适配的需求日益增加,但国内CPU架构种类繁多,导致大量的适配投入.同时,由于底层代码质量不同.代码实现风格不统一等问题,造成自研操作系统的应用开发门槛高,应用生态严 ...
- svelte组件:Svelte3自定义Navbar+Tabbr组件|svelte自定义插件
基于Svelte3自定义组件Navbar+Tabbar沉浸式导航条|底部凸起菜单栏 Svelte 一种全新的构建用户界面的框架.当下热门的 Vue 和 React 在浏览器中需要做大量的工作,而 Sv ...
- 10、mysql的调优
mysql的调优 调优的最终目的:节省系统资源.提高响应速度下面从6个维度对mysql进行优化. 第一步:对服务器的参数进行调优 通过show profile命令分析,如果sql语句在执行过程中等待时 ...