Oracle中CASE WHEN的用法实例
实例演示:
(1)查询表users中的数据。
select u.id,u.realname,U.SEX from users u;
查询结果如下
ID REALNAME SEX
1 10082 松XX
2 10084 林XX 1
3 10087 西XX
4 10100 胡XX
5 10102 龙XX 1
......
(2)上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用CASE语句。
| select u.id,u.realname,U.SEX, ( case u.sex when 1 then '男' when 2 then '女' else '空的' END ) 性别 from users u; |
查询结果
ID REALNAME SEX 性别
1 10082 松XX 空的
2 10084 林XX 1 男
3 10087 西XX 空的
4 10100 胡XX 空的
5 10102 龙XX 1 男
......
如果不希望列表中出现"sex"列,语句如下
| select u.id,u.realname, ( case u.sex when 1 then '男' when 2 then '女' else '空的' END ) 性别 from users u; |
(3)将sum与case结合使用,可以实现分段统计。
例如现在我希望将上表中各种性别的人数进行统计,sql语句如下
| select sum( case u.sex when 1 then 1 else 0 end) 男性, sum( case u.sex when 2 then 1 else 0 end) 女性, sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空 from users u; |
执行结果如下
男性 女性 性别为空
1 41 15 0
如果学校内有数千名学生进行了考试,想统计60分以下、60-80分、80-100分的总人数,就可以使用这样的语句来实现。只是条件不同而已。
(4)如果sum、case when结合group by使用,可以进行分组分段统计。
如,我希望统计users表中每个创建者创建的男性、女性、无性别的用户总数(数据表中有一个字段creator_id,表示创建者的ID),语句如下
| select u.creator_id 创建者ID, sum( case u.sex when 1 then 1 else 0 end) 男性, sum( case u.sex when 2 then 1 else 0 end) 女性, sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空 from users u group by u.creator_id; |
查询结果如下
创建者ID 男性 女性 性别为空
1 0 0 0
2 10000 35 12 0
3 11100 0 0 0
4 11060 0 0 0
5 11040 0 0 0
6 11080 2 0 0
7 10281 3 3 0
8 10580 1 0 0
上例中只有一个分组字段,实现了1级统计;如果有多个分组字段,应该可以实现多级统计了。如有居民统计表,保存了人口信息、人口所在市、区、街道信息等,欲统计深圳市的人口数据,实现统计如下统计结果的话,就可以通过多级分组实现。
区划 男性居民 女性居民
深圳市
南山区
粤海
科技
宝安区
新安
(5)case when的语法
|
CASE |
Oracle中CASE WHEN的用法实例的更多相关文章
- oracle中case...when的用法
全表的内容 case...when可以解决在显示的时候想显示别的名称的例子, 用的最多的地方就是性别, 比如上面的表中的性别是由'1'和'0'表示的, 但是实际显示出来在页面上给客户看是不可取的, 这 ...
- Oracle中Merge into的用法实例讲解
最近在做一个需求,就是涉及到表的问题,前端传过来一条数据,根据主键,查询数据库,如果不存在,那么久插入到数据库中一条,如果存在的话,就是以主键的方式,对数据库中的数据,进行更新. 拿到这个需求的时候, ...
- Oracle中rownum的基本用法
Oracle中rownum的基本用法 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且r ...
- Oracle 中 CONTAINS 函数的用法
Oracle 中 CONTAINS 函数的用法 1. 查询住址在北京的学生 SELECT student_id,student_name FROM students WHERE CONTAINS( a ...
- mysql数据库中case when 的用法
场景1:比如说我们在数据库存了性别的字段,一般都是存0 和 1 代表男和女 然后我们会得到0和1之后在java中判断 ,很麻烦有么有?其实我们完全可以在sql中判断好之后拿来现成的.就是在sql中 ...
- [转载]Oracle中TO_NUMBER()函数的用法
1 用法简介TO_NUMBER函数()是Oracle中常用的类型转换函数之一,主要是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反. To_number函数的格式如下: To_nu ...
- 【SQL】SQL中Case When的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...
- Oracle中 to_date和to_char用法
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...
- Oracle中to_number()函数的用法
to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...
随机推荐
- [RFC] Simplifying kernel configuration for distro issues
http://lwn.net/Articles/507276/ From: Linus Torvalds <torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b-A ...
- 【课程笔记】比特币和数字货币技术[Bitcoin and Cryptocurrency Technologies] week1
源地址(可能要FQ):https://www.coursera.org/learn/cryptocurrency/home/welcome 1.1 Cryptographic Hash Functio ...
- 基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统
一.登陆注册 二.登录验证码相关 三.博客首页显示相关 四.当前用户的家目录显示 五.点赞以及取消 六.父评论以及子评论操作 七.后台管理首页 八.文章的操作(增.删,改) 九.文件上传问题 十.me ...
- php 获取当前页面url路径
#测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST'].""; # ...
- 带缓冲的IO( 标准IO库 )
前言 在之前,学习了 read write 这样的不带缓冲IO函数.而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 writ ...
- 【转】Android IDA 动态调试最完善攻略,跨过各种坑
前提条件和运行环境一定要写清楚,不然会有很多坑,坑死人. (1)IDA 是最新的7.0版本 (2) JDB 使用Java安装目录下的 (3)系统是win10 使用命令窗口时有很大的差别 (4)手机是 ...
- Android UI经常使用实例 怎样实现欢迎界面(Splash Screen)
在Android平台下.下载一个应用后,首次打开映入眼帘的便是Splash Screen,暂且不说Android的设计原则提不提倡这样的Splash Screen.先来看看一般使用Splash Scr ...
- 生成ssh密钥
打开Git Bash,生成ssh密钥: ssh-keygen -t rsa -C "your_email@youremail.com"
- EasyHLS直播在Linux非root用户运行时出现无法写文件的问题解决mkdir 0777
今天在Github上收到一个用户反馈的EasyHLS在linux上非root用户调用时,无法写目录的问题:https://github.com/EasyDarwin/EasyHLS/issues/3, ...
- service oriented architecture 构造分布式计算的应用程序的方法 面向服务的架构 分解技术
zh.wikipedia.org/wiki/面向服务的架构 [程序功能做为服务] 面向服务的体系结构(英语:service-oriented architecture)是构造分布式計算的应用程序的方法 ...