ORACLE DAY4

/*
1. 显示工资涨幅,员工编号,原来的工资和增加的工资: 部门号10、50、110的有5%的涨幅,部门号为60的涨10%的工资部门号为20和80涨幅为15%,部门为90的不涨工资
*/

select round(aa*100,2)||’%raise’ as raise,employee_id, salary, aa * salary as new_salary
from (select employee_id as em_id,
(case
when department_id in (10,50,110) then 0.05
when department_id = 60 then 0.10
when department_id in (20,80) then 0.15
else 0
end
) aa
from employees),
employees
where employees.employee_id = em_id and aa <> 0;

/*
2. 找出哪个工作的最大工资大于整个公司内最大的工资的一半,使用with子句,显示出工作名,最大工
*/

WITH max_job as
(select job_title, max_salary as job_total from jobs),
max_all as
(select max(salary) as maxx from employees)
select * from max_job where job_total > (select maxx from max_all) / 2;
/*
3. 使用EXISTS/NOT EXISTS 找出部门员工数不大于3的部门信息,显示部门编号,部门名称
*/

select department_id, department_name
from departments
where NOT EXISTS (select department_id
from employees
where employees.department_id = departments.department_id
group by department_id
having count(*) > 3);

select department_id, department_name
from departments
where EXISTS ((select count(*)
from employees
where employees.department_id = departments.department_id
having count(*) <= 3));

/*
4. 显示员工编号、上司、等级、姓,要求姓前面加上下划线,等级越低横线越长
*/

select * from employees;
select employee_id,manager_id,last_name,lpad(level,2*level-1,’_’) as le
from employees
connect by prior employee_id=manager_id
start with manager_id is null

/*
5. 将employees表复制到EMP_CPY,在EMP_CPY上添加SEX列,根据实际情况,将sex列内容补充完整;复习group rollup函数
*/

create table EMP_CPY as select * from employees;
alter table emp_cpy add (sex varchar2(20) constraint ck_emp_cpy_sex check (sex in (‘M’,’F’)));

update emp_cpy set sex=case
when employee_id < 150
then ‘M’
else ‘F’
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值