mysql中的case_Mysql之case语句(附带实例)

这段时间,做项目做累了,好不容易有点个人的学习时间,利用这个小时,总结一下,最近做统计的时候常用的case语句吧。

结构:case  when… then …end

1.判断的同时改变其值

eg:

select OperatorAccount,

case

when CreateTime>'2016-02-14 16:24:42' then 'after'

when CreateTime

else 'now' end stage

from log_login order by CreateTime DESC

7ab166cea010c55cc87818deb4ae5dbe.png

第二种写法

SELECT CallerNumber, CASE IsLocal

WHEN 0 THEN '外线'

WHEN 1 THEN '内线' END

FROM cdr

e62dece341679bea4adf313834b5f08a.png

2.拆分一行为多列

eg:

SELECT SipAccount, COUNT(1) AS number,IsCheck

FROM cdr

GROUP BY SipAccount,IsCheck

7b1a79bea1a01c231cb016d03454febc.png

针对这个统计结果进行拆分(0表示未打分,1代表优秀,2代表合格,3代表不合格)

最终结果如下:

e292aff3fe10874c97a004aa03fd2856.png

所以最终要用到行拆分成三列,语句如下

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

22facbe7acb2f6688c57aa97fef1dbc6.png

现在结果是这样的,你会发现虽然拆成了三列,但是最终结果还不是自己需要的,接下来就需要根据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

71b445205c0f9507db71219f3b8316a3.png

最终得到了这个结果。正式我们需要的格式

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 ...

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 语句集锦

Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

基于表的数据字典构造MySQL建表语句

表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...

随机推荐

thinkphp学习简易教程(一) thinkphp创建项目

1.在本地服务器根目录下创建项目目录,如命名为app: 2.把thinkphp的压缩包解压到与项目同级目录下,如app是放在目录APP下面,即项目目录路径为'APP/app/',则thinkphp应解 ...

linux编译php的c扩展

第一步:安装php5 第二步:打开终端[为来方便,这里使用root用户],使用CD命令进入到php5源码包的ext目录 第三步:在终端键入以下命令 ./ext_skel --extname=extes ...

header页头内容整理

meta标签

asp.net 中使用不同的数据源绑定gridview

第一种,使用SqlDataReader绑定gridview.代码如下: public SqlDataReader bind() { SqlConnection con = new SqlConnect ...

[转]openlayer+geoserver实现WFS操作

From:http://liushaobo2005.blog.163.com/blog/static/253056702011541462372/ wfs是OGC的标准规范,主要用于提供对矢量地理数据 ...

暂时和永久改动oracle sysdate的默认输出格式

1.当前会话有效 alter session set NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS'; 2.永久生效 sys用户登入后运行例如以下命令 然后重新启动数据 ...

SourceInsight - 常用设置和快捷键大全

1. 让{ 和 } 不缩进 Options -> Document Options -> Auto Indenting -> Auto Indent Type 选 Simple 2. ...

java NIO详解

http://zalezone.cn/2014/09/17/NIO%E7%B2%BE%E7%B2%B9/ 1. 前言 我们在写java程序的时候,为了进行优化,把全部的精力用在了处理效率上,但是对IO ...

数据结构 单链表元素定位 PTA

由于这个很简单,他也貌似没要判断溢出,取巧突破 #include #include #include // ...

KERBEROS PROTOCOL TUTORIAL

KERBEROS PROTOCOL TUTORIAL   This tutorial was written by Fulvio Ricciardi and is reprinted here wit ...

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值