oracle 查询语句练习

  1. 列出至少有一个员工的部门
  2. select dname  from dept  where deptno in(select emp.deptno from emp,dept where emp.deptno=dept.deptno group by emp.deptno having count(*)>1);
  3. 列出薪资比李四大的所有员工

select * from emp where salary>(select salary from emp where ename='李四');

  1. 列出所有员工的姓名及其直接上级的姓名。(多次对自己查询,为表的取个别名,内部查询可以像对象一样引用外部的对象的字 段,这里引用与编程中的作用域相似,即与{}类比)

select a.ename,(select b.ename from emp b where b.empno=a.mgr)from emp a;

select e.ename,m.ename as boss_name from emp e left join emp m on  e.mgr=m.empno;

  1. 列出受雇日期早于其直接上级的所有员工。

select a.ename from emp a where a.hiredate  (select b.hiredate from emp b where b.empno=a.mgr);

  1. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。列出所有“CLERK”(办事员)的姓名及其部门名称。
  2. 列出最低薪金大于1500的各种工作。
    select  distinct job from emp where salary>1500;

Distinct 的作用是去除重复行;

  1. 列出在部门“后台开发”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
    select ename from emp where job='后台开发';
  2. 列出薪金高于公司平均薪金的所有员工。
    select ename from emp where salary >(select avg(salary) from emp);
  3. 列出与“张三”从事相同工作的所有员工。
    select ename from emp where job=(select job from emp where ename='张三');
  4. 列出薪金等于部门1中员工张三的薪金的所有员工的姓名和薪金。
    select e.ename,e.salary from emp e  where e.salary=(select m.salary from emp m where m.ename='张三') and e.ename<>'张三';
  5. 列出薪金高于在部门1工作的所有员工的薪金的员工姓名和薪金。
    select ename,salary from emp where salary> (select sum(salary)  from emp where deptno=1  );
  6. 列出在每个部门工作的员工数量、平均工资和平均服务期限。
    select count(*),avg(salary), avg(sysdate-emp.hiredate) from emp group by deptno;
  7. 列出所有员工的姓名、部门名称和工资。
    select  e.ename,d.dname,e.salary from emp e,dept d where e.deptno=d.deptno;
  8. 列出所有部门的详细信息和部门人数。
    select count(*) ,d.deptno,d.dname,d.loc  from emp e, dept d where e.deptno=d.deptno group by d.dname,d.deptno,d.loc ;
  9. 列出各种工作的最低工资。
    select min(salary) ,job from emp group by job;
  10. 列出各个部门的MANAGER(经理)的最低薪金。
     
  11. 列出所有员工的年工资,按年薪从低到高排序。

 

Select ename,nal2(comm,comm+salary,salary)*12 from emp order by asc;

猜你喜欢

转载自blog.csdn.net/qq_40509841/article/details/83022447