Mysql之case语句(附带实例)
这段时间,做项目做累了,好不容易有点个人的学习时间,利用这个小时,总结一下,最近做统计的时候常用的case语句吧。
结构:case when… then …end
1.判断的同时改变其值
eg:
select OperatorAccount,
case
when CreateTime>'2016-02-14 16:24:42' then 'after'
when CreateTime<'2016-02-14 16:24:42' then 'before'
else 'now' end stage
from log_login order by CreateTime DESC

第二种写法
SELECT CallerNumber, CASE IsLocal
WHEN 0 THEN '外线' WHEN 1 THEN '内线' END FROM cdr

2.拆分一行为多列
eg:
SELECT SipAccount, COUNT(1) AS number,IsCheck
FROM cdr
GROUP BY SipAccount,IsCheck
针对这个统计结果进行拆分(0表示未打分,1代表优秀,2代表合格,3代表不合格)
最终结果如下:

所以最终要用到行拆分成三列,语句如下
SELECT SipAccount,
(CASE IsCheck WHEN 1 THEN number END) youxiu,
(CASE IsCheck WHEN 2 THEN number END) hege,
(CASE IsCheck WHEN 3 THEN number END) buhege
FROM
(SELECT SipAccount, COUNT(1) AS number,IsCheck
FROM cdr
GROUP BY SipAccount,IsCheck) AS a
现在结果是这样的,你会发现虽然拆成了三列,但是最终结果还不是自己需要的,接下来就需要根据sipaccount来分组的同时对结果进行处理了。语句如下:
SELECT sipaccount,
IF(MAX(youxiu) IS NULL,0, MAX(youxiu)) youxiu,
IF(MAX(hege) IS NULL,0, MAX(hege)) hege,
IF(MAX(buhege) IS NULL,0, MAX(buhege)) buhege
FROM
(SELECT SipAccount,
(CASE IsCheck WHEN 1 THEN number END) youxiu,
(CASE IsCheck WHEN 2 THEN number END) hege,
(CASE IsCheck WHEN 3 THEN number END) buhege
FROM
(SELECT SipAccount, COUNT(1) AS number,IsCheck FROM cdr GROUP BY SipAccount,IsCheck) AS a) AS b
GROUP BY sipaccount
最终得到了这个结果。正式我们需要的格式
Mysql之case语句(附带实例)的更多相关文章
- MySQL存储过程 CASE语句
MySQL存储过程 CASE语句 除了IF语句,MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高效. CASE语句有两种形式:简单的搜索CASE语句. 简单C ...
- linux bash shell中case语句的实例
本文介绍下,在bash shell编程中,有关case语句的一个例子,学习下case语句的用法,有需要的朋友参考下. 本文转自:http://www.jbxue.com/article/13377.h ...
- ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句
5.1 CASE语句 1. CASE语句具有如下结构 CASE SELECTOR WHEN EXPRESSION 1 THEN STATEMENT 1; WHEN EXPRESSSION 2 THEN ...
- Shell系列(34) - 多分支case语句简介及实例
多分支case条件语句 概念 case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关 ...
- mysql查询 if判断、case语句的使用等
一. 查询的数字转换为中文返回前端 1. 如果是0或1表状态等,可用: IF(字段 = 0, '否', '是') AS xxx 2. 如果是多个值,比如1,2,3可用: ELT(字段, '计划治理', ...
- MySQL中SQL语句2
上一片介绍了一些基本的SQL的增删改查,这一片会介绍一些进阶的SQL语句使用. MySQL中的视图 视图是什么?当我们总是查询几张表的某个字段时,可以创建一张虚拟表,把这几个字段写入这个虚拟的表,这样 ...
- mysql 常用 sql 语句 - 快速查询
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互 1.1.1 mysql 连接 mysql.exe -hPup ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
- MySQL 数据库SQL语句——高阶版本2
MySQL 数据库SQL语句--高阶版本2 实验准备 数据库表配置: mysql -uroot -p show databases; create database train_ticket; use ...
随机推荐
- Python类属性的延迟计算
所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算. 优点 构造一个延迟计算属性的主要目的是为了提升性能 实现 ...
- linux的“自动化”
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- c#操作IIS站点
/// <summary> /// 获取本地IIS版本 /// </summary> /// <returns></returns> public st ...
- QT学习第2天
回顾: 1.构建一个QT工程步骤 (1)qmake -project (2)qmake (3)make 2.两个常用的组件 QLabel 标签 QPushButton 按钮 --------- ...
- 简述几项关于web应用的开发技术
有几个人曾经问我,有哪些最有用或最好的编程语言适宜学习? 姑且略过HTML/CSS不谈,我认为答案取决于你想通过编程来做什么. 要点速览 对只用一种语言来构建某个项目的情况而言,Javascript和 ...
- 扩展Unity的方法
写更少代码的需求 当我们重复写一些繁杂的代码,或C#的一些方法,我们就想能不能有更便捷的方法呢?当然在unity中,我们对它进行扩展. 对unity的类或C#的类进行扩展有以下两点要注意: 1.这个类 ...
- JSP中九大内置对象及其数据类型
JSP中九大内置对象为: request 请求对象 类型 javax.servlet.ServletRequest 作用域 Req ...
- 转:研读代码必须掌握的Eclipse快捷键
总结的很不错,而且有相应的用法,推荐!!! from: http://www.cnblogs.com/yanyansha/archive/2011/08/30/2159265.html 研读代码必须掌 ...
- javascript一些小问题
1.async 类型:Boolean 默认值: true.默认设置下,所有请求均为异步请求.如果需要发送同步请求,请将此选项设置为 false. 注意,同步请求将锁住浏览器,用户其它操作必须等待请求完 ...
- NSArray遍历和修改崩溃
//一.代码 NSArray *array = [self.dataList mutableCopy]; 或 NSArray *array = [NSArray arrayWithArray:self ...


