1. 程式人生 > >MySql 中 case when then else end 的用法

MySql 中 case when then else end 的用法

sta 結束 name cas ber sel 如果 user num

MySql 中 case when then else end 的用法

解釋:

SELECT
case -------------如果
when sex=‘1‘ then ‘男‘ -------------sex=‘1‘,則返回值‘男‘
when sex=‘2‘ then ‘女‘ -------------sex=‘2‘,則返回值‘女‘
else 0 -------------其他的返回‘其他’
end -------------結束
from sys_user --------整體理解: 在sys_user表中如果sex=‘1‘,則返回值‘男‘如果sex=‘2‘,則返回值‘女‘ 否則返回‘其他’

---用法一:


SELECT
CASE WHEN STATE = ‘1‘ THEN ‘成功‘
WHEN STATE = ‘2‘ THEN ‘失敗‘
ELSE ‘其他‘ END
FROM SYS_SCHEDULER
---用法二:
SELECT STATE
CASE WHEN ‘1‘ THEN ‘成功‘
WHEN ‘2‘ THEN ‘失敗‘
ELSE ‘其他‘ END
FROM SYS_SCHEDULER

列子:

有員工表empinfo
(
Fempno varchar2(10) not null pk,
Fempname varchar2(20) not null,
Fage number not null,
Fsalary number not null
);
假如數據量很大約1000萬條;寫一個你認為最高效的SQL,用一個SQL計算以下四種人:
fsalary>9999 and fage > 35
fsalary>9999 and fage < 35
fsalary <9999 and fage > 35
fsalary <9999 and fage < 35
每種員工的數量;
select sum(case when fsalary > 9999 and fage > 35
then 1
else 0end) as "fsalary>9999_fage>35",
sum(case when fsalary > 9999 and fage < 35
then 1
else 0
end) as "fsalary>9999_fage<35",
sum(case when fsalary < 9999 and fage > 35
then 1
else 0
end) as "fsalary<9999_fage>35",
sum(case when fsalary < 9999 and fage < 35
then 1
else 0
end) as "fsalary<9999_fage<35"
from empinfo;

MySql 中 case when then else end 的用法