Oracle_Day03(条件表达式,嵌套函数,多表查询,分组查询)
条件表达式
- 在 SQL 语句中使用IF-THEN-ELSE 逻辑
- 使用的两种方法:
- CASE 表达式
- DECODE 函数
CASE表达式:
--查询部门号为 10, 20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数
SELECT ename,job,deptno,sal ,
case deptno when 10 then sal * 1.1
when 20 then sal * 1.2
when 30 then sal * 1.3
ELSE sal
end "salary" -- 此处的字符串表示case的字段名称,必须使用双引号
FROM emp;
DECODE 函数:
decode() 函数的语法:
SELECT decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) FROM talbename WHERE
--Decode实现
SELECT ename,job,deptno,sal,
DECODE(deptno,10,sal * 1.1,20,sal * 1.2,30,sal * 1.3,sal) salary FROM emp;
-- 使用Decode 将员工的job显示为中文
SELECT ename,job,
DECODE(job,'CLERK','店员','SALESMAN','销售员','MANAGER','经理',job) 职位
嵌套函数
函数里面还可以是另一个函数的处理的结果,执行顺序是由内到外
--查询雇员中没有领导的雇员信息,如果该雇员没有经理,则将manager_id 修改为'No Manager'
SELECT ename,job,mgr,NVL(to_char(mgr),'No Manager') FROM emp
多表查询
-- 查询员工信息及其所在的部门信息