一、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(*)
----------------------------