刚学oracle,希望大家大神指点一下

oracle 基本查询 (小部分)

- 查询每个部门下有多少员工

select dname,count(ename) from dept d left join emp e on d.deptno=e.deptno group by dname;


- 查询除去 salesman 所有平均工资超过 1500 的部门

 select d.dname,job,avg(sal) from emp e join dept d on d.deptno = e.deptno where job!='sasalesman'group by d.dname,job having avg(sal)>=1500;


- 查询在 new york 工作的所有员工的姓名,部门名称和工资信息

 select ename,d.dname,sal from emp e join dept d on d.deptno = e.deptno where d.loc='NEW YORK' order by e.sal;


- 查询姓名为 King 的员工的编号,名称跟部门

 select empno,ename,d.dname from emp e left join dept d on d.deptno = e.deptno where e.ename='KING';


- 查询各种工作的最低工资

select job,min(sal) from emp group by job;


- 查询工龄大于10年的所有员工信息

select * from emp where(sysdate-hiredate)/365>10;
 
- 查询每个部门员工数量,平均工资和平均工作年限

select dname,count(ename),avg(sal+nvl(comm,0)),avg(to_char(hiredate,'yyyy')) AVGDATE from dept d left join emp e on (e.deptno = d.deptno) group by d.dname;

- 统计各部门每个工种的人数,平均工资。

select dname,job,count(*),avg(sal) from emp e join dept d on (e.deptno = d.deptno) group by d.dname,job;

 

- 查询所有员工工资都大于1000的部门的信息及员工信息

select * from dept d left join emp e on d.deptno = e.deptno where e.deptno in (select deptno from emp e1 group by deptno having min(sal)>1000);

- 查询入职日期早于其直接上级的所有员工信息。

select * from emp e where hiredate<(select hiredate from emp p where p.empno=e.mgr);

- 列出雇员中(除去mgr为空的人)工资第二高的人。


- 列出1981年来公司所有员工的总收入(包括sal和comm)
select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,'yyyy')='1981';

 

转载于:https://www.cnblogs.com/FRFRFR/p/7373141.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值