CASE WHEN
语法:
CASE WHEN 条件1 THEN 返回值1WHEN 条件2 THEN 返回值2ELSE 默认值END
-- 对 EMP 的 DEPTNO 字段进行判断,显示出对应的部门名称
SELECT
E.*,
CASE WHEN E.DEPTNO=10 THEN 'ACCOUNTING'WHEN E.DEPTNO=20 THEN 'RESEARCH'WHEN E.DEPTNO=30 THEN 'SALES'ELSE 'OPERATIONS' END AS 部门名称
FROM EMP E
-- 使用 SQL语句进行不同条件的统计
-- 每个部门中工资高于 1500 的人,占整个部门的人数比例
-- 第一步: 部门的人数
-- 第二步: 高于1500 的人数
-- 高于 1500人数 /整个部门的人数
SELECT
E.DEPTNO,
COUNT(*) 部门人数,
SUM(CASE WHEN E.SAL >1500 THEN 1 ELSE 0 END ) AS 高于1500的人数,
ROUND( SUM(CASE WHEN E.SAL >1500 THEN 1 ELSE 0 END ) / COUNT(*) ,3) * 100 || '%' 部门人数占比
FROM EMP E
GROUP BY E.DEPTNO
--在数据更新里,进行条件分支
CREATE TABLE SALS
(NAME VARCHAR2(10),
SAL NUMBER
);insert into SALS VALUES('张三',30000);
insert into SALS VALUES('李四',27000);
insert into SALS VALUES('王五',22000);
insert into SALS VALUES('赵六',29000);-- 对工资 3w包括3w的降薪 10% 对当前 2.5W~3W的员工,加薪20%
UPDATE SALS
SET SAL = CASE WHEN
SAL >= 30000 THEN SAL*0.9
WHEN SAL >= 25000 AND SAL < 30000 THEN SAL *1.2
ELSE SAL END;