Mysql oracle casewhen 完美应用

Posted zhengfujava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql oracle casewhen 完美应用相关的知识,希望对你有一定的参考价值。

使用SQL99标准通用语法中的case表达式,将职位是分析员的,工资+1000;职位是经理的,工资+800;职位是其它的,工资+400
1;

case 字段
     when 条件1 then 表达式1
     when 条件2 then 表达式2
     else 表达式n
end

select ename "姓名",job "职位",sal "涨前工资",
       case job
        when ‘ANALYST‘ then sal+1000
        when ‘MANAGER‘ then sal+800
            else sal+400
       end "涨后工资"
from emp;

2搜索函数

CASE
WHEN sex = ‘1‘ THEN ‘男‘  
WHEN sex = ‘2‘ THEN ‘女‘  
ELSE ‘其他‘ END

案例其中 count可以换成sum

SELECT
       COUNT(CASE WHEN e.sex=1 THEN 1 END) "男",
       COUNT(CASE WHEN e.sex=2  THEN 1 END) "女"
      
    FROM emp e;

案例

/*
笔试题3:有一个员工表empinfo结构如下
      create table empinfo(
    fempno    varchar2(10) primary key,
    fempname varchar2(20) not null,
        fage number(2) not null,
        fsalary number(10,2) not null
      );
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘1‘,‘AA‘,30,7000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘2‘,‘BB‘,31,8000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘3‘,‘CC‘,32,9000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘4‘,‘DD‘,33,10000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘5‘,‘EE‘,34,11000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘6‘,‘FF‘,35,12000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘7‘,‘GG‘,36,13000);
      insert into empinfo(fempno,fempname,fage,fsalary) values(‘8‘,‘FF‘,37,14000);

      假如该表有大约1000万条记录,写一句最高效的SQL语句,计算以下4种人中每种员工的数量
      第1种人:fsalary>9999 and fage>35
      第2种人:fsalary>9999 and fage<35
      第3种人:fsalary<9999 and fage>35
      第4种人:fsalary<9999 and fage<35
     
      提示:只用一条SQL搞定
*/

    select
       sum(case when e.fsalary>9999 and e.fage>35 then 1 else 0 end) "第1种人",
       sum(case when e.fsalary>9999 and e.fage<35 then 1 else 0 end) "第2种人",
       sum(case when e.fsalary<9999 and e.fage>35 then 1 else 0 end) "第3种人",
       sum(case when e.fsalary<9999 and e.fage<35 then 1 else 0 end) "第4种人"
    from empinfo e;




















































以上是关于Mysql oracle casewhen 完美应用的主要内容,如果未能解决你的问题,请参考以下文章

在oracle sql语句里有没有if...else...的用法,请各位大侠给个例子看看,灰常感谢!!

SQL2000行转列于列转行问题,急~~~ (部门是不确定几个的)

DECODE 与CASE WHEN 的比较以及用法

Oracle CASE WHEN 用法介绍

介绍MySQL的caseWhen end语句

case when 当中怎么判断一个字段是不是为空