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

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

时间: 2024-08-29 16:42:22

Mysql之case语句(附带实例)的相关文章

MySQL 存储过程CASE语句用法

MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高效. CASE语句有两种形式:简单的搜索CASE语句.下面讲讲MySQL 存储过程CASE语句用法. 1,CASE语法结构 CASE case_expression WHEN when_expression_1 THEN commands WHEN when_expression_2 THEN commands ... ELSE commands END CASE; 2,CASE应用实例 DELIMITER

Shell编程之case语句与循环语句

case语句分支 1.case语句的结构 case 变量值 in模式 1)命令序列 1;;模式 2)命令序列 2;;......*)默认命令序列esac case分支语句的结构图使用case分支语句的注意点:1.case行尾必须为单词"in",每一个模式必须以右括号")"结束.2.双分号";;"表示命令序列的结束.3.模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以用竖杠符号"|"表示

ORACLE PL/SQL 实例精解之第五章 条件控制:CASE语句

5.1 CASE语句 1. CASE语句具有如下结构 CASE SELECTOR WHEN EXPRESSION 1 THEN STATEMENT 1; WHEN EXPRESSSION 2 THEN STATEMENT 2; ........ WHEN EXPRESSION N THEN STATEMENT N; ELSE STATEMENT N+1; END CASE; 保留字CASE标识CASE语句的开始.选择器决定哪个WHEN子句应该被执行.每个WHEN子句都包含一个EXPRESSION

mysql执行SQL语句时报错:[Err] 3 - Error writing file &#39;/tmp/MYP0G1B8&#39; (Errcode: 28 - No space left on device)

问题描述: 今天一同事在mysql中执行SQL语句的时候,报了/tmp空间不足的问题,报错如下: [SQL] SELECT f.prov as 字段1, MAX( CASE f.flag_name WHEN '字段1' THEN f.num ELSE 0 END ) AS '字段1', MAX( CASE f.flag_name WHEN '店员量' THEN f.num ELSE 0 END ) AS '字段1', MAX( CASE f.flag_name WHEN '字段1' THEN f

第九课javascript语句运用实例

if...else语句 1 var a=12; 2 if(a>10){ 3 alert("a的值大于10"); 4 }else{ 5 alert("a的值不大于10"); 6 } if...else...if语句 1 var a=12; 2 if(a<10){ 3 alert("a的值小于10"); 4 }else if(a==10){ 5 alert("a的值等于10"); 6 }else{ 7 alert(&q

对MySql经常使用语句的详细总结

下面总结的知识点全是经常用的,全都是干货,好好收藏吧./* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示

mysql数据库操作语句大全

一 . 常用mysql命令行命令 1 .启动MYSQL服务  net start mysql 停止MYSQL服务  net stop mysql 2 . netstat –na | findstr 3306 查看被监听的端口 , findstr用于查找后面的在端口是否存在 3 . 在命令行中登陆MYSQL控制台 , 即使用 MYSQL COMMEND LINE TOOL 语法格式 mysql –user=root –password=123456 db_name 或 mysql –uroot –

shell脚本中的逻辑判断,文件目录属性判断,if特殊用法,case语句

笔记内容: 20.5 shell脚本中的逻辑判断 20.6 文件目录属性判断 20.7 if特殊用法 20.8/20.9 case判断 笔记日期:2017-11-22 20.5 shell脚本中的逻辑判断 在所有的编程语言中都会有if语句来进行逻辑判断,所以在shell中也不例外. Shell的if语句的判断条件和其他编程语言一样写在if关键字的那一行,但是需要使用方括号括起来,并且变量和逻辑运算符以及方括号都要用空格隔开,这一点和其他的编程语言不一样,整个if语句块以fi关键字表示结尾,the

Linux 条件判断 - if语句 - case语句 - for语句

01.按照文件类型进行判断   => 常用-d.-e.-f 两种格式: test -e /root/install.log  =>   常用 [ -e /root/install.log ]  =>   两边空格必须有 例如:[ -d /root ] && echo "yes" || echo "no":判断该文件是否存在,并且是否为目录文件,是yes,不是no. 02.按照文件权限进行判断   => 03.两个文件之间比较