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...的用法,请各位大侠给个例子看看,灰常感谢!!