case when用法

一、select语句可以对数据进行逻辑语句

例如工资小于2000就返回“underpaid”,大于4000,返回“overpaid”,如果在两者直接,返回“ok”

方式1:

select ename ,sla,

  case  when sal <=2000 then 'underpaid'

     when sal>=4000 then 'overpaind'

        else 'ok' 

  end  as status

from emp;

方式2:

select ename ,sla,

  case sla

when <=2000 then 'underpaid'

when >=4000 then 'overpaind'

else 'ok' end  as status

from emp


这两种方式功能相同,查询结果自然也相同:

ename    sla    status
----------------------------
jim        2000   underpaid
jeff        1757   underpaid
monn   4500   overpaid
shine   3000   ok
has      4500   overpaid
mini     2800   ok


二、select和where语句都存在case when

统计工资等级以及每个等级的员工数,查询语句如下,不光select语句使用case when:

SELECT
CASE WHEN salary <= 2000 THEN '1'
WHEN salary > 2000 AND salary <= 3000  THEN '2'
WHEN salary > 300 AND salary <= 4000  THEN '3'
WHEN salary > 4000 AND salary <= 10000 THEN '4'
ELSE NULL END salary_class,
COUNT(*)
FROM    Table_A
GROUP BY
CASE WHEN salary <= 2000 THEN '1'
WHEN salary > 2000 AND salary <= 3000  THEN '2'
WHEN salary > 3000 AND salary <= 3000  THEN '3'
WHEN salary > 4000 AND salary <= 10000 THEN '4'
ELSE NULL END;

查询结果如下:

salclass     count(*) 
----------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值