oracle实验报告三
1.检索参与小型监控系统的员工信息,并将薪资按照从高到低排序
select * from staff where 员工编号 in
(select 员工编号 from 员工参加项目 where 项目编号 in(select 项目编号 from project where 项目名称='小型监控系统'))
order by salary desc;
–2.显示出已选项目的员工信息
select staff.员工编号,姓名,性别,生日,祖籍,salary ,项目编号 from staff
join 员工参加项目 on staff.员工编号=员工参加项目.员工编号 ;
–3.查询员工编号为4的员工姓名,薪资,所选项目
select 姓名,salary,项目编号 from staff join 员工参加项目 on
staff.员工编号=员工参加项目.员工编号 where staff.员工编号='4号员工';
–4.查询员工最高工资和最低工资的差距(DIFFERENCE)
select max(salary)-min(salary) DIFFERENCE from staff;
–5.查询公司中员工总数量,出生在1978年,1980年,1982年和1987年的员工数量。
select trunc(生日,'year') 年份,count(员工编号) 员工数量 from staff group by trunc(生日,'year');
–6.列出薪金比张三高的员工信息
select * from staff where salary>(select salary from staff where 姓名='张三' );
–7.列出出生在80年代的员工信息
select * from staff where 生日 between '1-1月-1970' and '31-12月-1979';
–8.列出所有员工的年工资,按照年薪从低到高排列
select 姓名,salary*12 as 年薪 from staff order by salary*12 ;
–9.列出每个项目的持续月数
select round(months_between(to_date('1/1/2010','mm/dd/yyyy'),to_date('8/6/2009','mm/dd/yyyy')),2) "小型监控系统" ,
round(months_between(to_date('10/1/2010','mm/dd/yyyy'),to_date('12/30/2009','mm/dd/yyyy')),2) "办公网络安全",
round(months_between(to_date('12/31/2009','mm/dd/yyyy'),to_date('11/30/2008','mm/dd/yyyy')),2) "电子购物广场",
round(months_between(to_date('12/31/2009','mm/dd/yyyy'),to_date('11/30/2009','mm/dd/yyyy')),2) "图书管理系统" from dual;
–10.列出没有员工负责的项目信息
select * from project where 项目编号 not in
(select project.项目编号 from project join 员工参加项目 on 员工参加项目.项目编号=project.项目编号);