Oracle单表的复杂查询

Oracle单表的复杂查询

 

select avg(sal),max(sal),deptnofrom empgroupby deptno;

select avg(sal),max(sal),deptnofrom empgroupby deptnohavingavg(sal)>2000orderby deptno;

查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J

select *from empwhere (sal>500or job='manager')and enamelike'J%';

按照部门号升序而雇员的工资降序排列

select *from emporderby deptnoasc , saldesc ;

select (sal+nvl(comm,0))*12assum,enamefrom emporderbysum;

求最高工资和最低工资

selectmax(sal),min(sal)from emp ;

查询最高工资员工的名字,工作岗位

select ename,salfrom empwhere (selectmax(sal)from emp )=sal;

显示工资高于平均工资的员工信息

select *from empwhere sal>(selectavg(sal)from emp);

group by having子句
group by
用于对查询的结果分组统计,
having
子句用于限制分组显示结果。

如何显示每个部门的平均工资和最高工资

selectavg(sal),max(sal),deptnofrom empgroupby deptno;

显示每个部门的每种岗位的平均工资和最低工资?

selectavg(sal),max(sal),min(sal),deptno,jobfrom empgroupby deptno,job;

显示平均工资低于2000的部门号和它的平均工资?

selectavg(sal),max(sal),deptnofrom empgroupby deptnohavingavg(sal)>2000orderby deptno;

对数据分组的总结:
1
分组函数只能出现在选择列表、havingorder by子句中(不能出现在where)
2
如果在select语句中同时包含有group by, having, order by那么它们的顺序是group by, having, order by
3
在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则就会出错。
   如SELECT deptno, AVG(sal), MAX(sal) FROM emp GROUP by deptno HAVING AVG(sal) < 2000;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值