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 函数语法与使用的更多相关文章

  1. Case when 的用法,简单Case函数

    Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...

  2. Swift之函数语法详解

    函数 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被“调用”. Swift 统一的函数语法足够灵活,可以用来表示任何函数 ...

  3. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  4. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  5. Mysql 常用函数(4)- case 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html case 的作用 if 的高级版,类似Java 里 ...

  6. sum 函数语法与应用

    一.sum 函数语法: SELECT SUM(expression )   FROM tables    WHERE predicates; expression 常量.列或函数,或者是算术.按位与字 ...

  7. SQL变量、Substring、charindex、case函数、去除重复

      isnull(aa,0)删除表数据: truncate table aaa 添加字段: ALTER TABLE table1 ADD col1 varchar(200) DEFAULT '2008 ...

  8. Linux下多进程编程之exec函数语法及使用实例

    exec函数族 1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的进程如何执行呢?exec函数族就提供了一个在进程中启动另一个程序执行的 ...

  9. Shell函数语法

    Shell函数语法 定义函数: function   函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名  参数一   参数二 return在函数里面使用会跳出函数并 ...

随机推荐

  1. CentOS7下修改默认网卡名为eth0的方法

    1.修改网卡配置文件中的 DEVICE=参数的,关于eth0 [root@ansheng ~ ]# cd /etc/sysconfig/network-scripts/ [root@ansheng n ...

  2. 轩辕展览-VR虚拟展厅设计如何实现全景漫游功能

    什么是在线3d漫游?如何在VR虚拟展厅设计之中实现3d漫游功能?让我们来分享3dVR虚拟展厅的在线漫游. 实际上,在线3d漫游就是通过3d仿真场景,使用鼠标和键盘在虚拟空间之中自由漫游,它可以从高空俯 ...

  3. IDEA如何快速生成get和set方法

    方法一:1.鼠标右击"Generate"2.点击"Getter and Setter",3.将定义的字段全部选中,点击OK.方法二:使用alt+insert 快 ...

  4. [题解]UVA658 It's not a Bug, it's a Feature!

    链接:http://vjudge.net/problem/viewProblem.action?id=22169 描述:有n个漏洞,m个修复漏洞的方法,每种方法耗时不一样,求修复漏洞的最短时间.每种方 ...

  5. Tableau“出走中国”,“卖”给阿里,中国BI用户该何去何从?

    11月,Tableau在发给客户的邮件中透露将停止中国的直销业务,加入阿里的合作体系.消息来的如此突然,Tableau的同仁.合作伙伴.客户.用户.爱好者,甚至友商,无一不感到震惊和担忧. 在我们数据 ...

  6. 2021顶级的开源 BI(商业智能)软件和报表工具

    在这个信息化时代,每分每秒都产生海量数据.在海量数据中,挖掘出有用的数据,并且能以较人性化.直观的方式展示这些数据,变得尤为重要.本文将介绍5款顶级开源 BI(商务智能)软件和报表工具,用于商业数据的 ...

  7. 安装好的pycharm修改代码存储路径

    安装好pycharm的时候,第一次点开pycharm没有配置好,导致代码存放的路径是默认的.但是现在想把路径改成自己的路径怎么办? 首先,pycharm->file->settings-& ...

  8. MM32F0020 GPIO驱动LED灯(MM32F0020 GPIO Toggle)

    目录: 1.MM32F0020简介 2.MM32F0020系统时钟配置 3.MM32F0020的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0020 GPIO驱 ...

  9. yalmip安装

    1,将yalmip解压,在matlab中添加路径. 2,yalmiptest测试是否安装成功.

  10. Java课程设计---删除学生

    1.界面已经在上次修改操作的过程添加完成 2.在StudentDao中添加删除方法 public boolean delete(int id) throws SQLException { DbUtil ...