黑马程序员-Oracle(第五讲)

黑马程序员-Oracle(第五讲)

1、group by

求出每个部门的平均薪水

 

 

这就是按照deptnojob分组,就是将deptnojob一样的分为一组

2、子查询

现在我要查询emp表中sal最高的那个人的名字,着能用子查询,总不能这么写吧

 

子查询:

 

现在要查询每组中sal最高的人的姓名,薪水

 

修改:

 

对比上面两条SQL执行结果:可得出结论

select的字段如果没有出现在组函数里面,必须出现在group by子句中

3、having 对分组进行限制

例如我们现在要求出每个部门的平均薪水:


然后求出每个部门中平均薪水大于2000的部门

 

好好理解,感觉挺不好理解的:

 

4、需求:求出有哪些人的工资位于所有人的平均工资之上

 

需求:求出按部门进行分组之后,每组中薪水最多的那个人的姓名,薪水,部门编号

 

那么把等号改成in呢?

 

结果出来了,结果貌似正确,注意这种写法其实是有问题的,

想想,假如10部门中还有个3000的人,他会不会被选出来呢?答案是肯定的

此时,我们就要用到数据库中的连接:

先看个列子:

 

其实这个查询出来的还是一张表,现在再来理解下面这个SQL

 

刚刚演示的时候,多写了个deptno,结果错了:

 

分析一下:因为最后查询的时候,是从两个连接后的总表中进行查询的,由于两个表中都有deptno,所以总表中应该有两个deptno,所以现在应该指定选择哪个表中的deptno

验证:

 

验证结果正确

 

现在不是有两张表么,我要求出emp表按部门分组后的薪水的平均值,然后,查出这个薪水是哪个等级(在salgrade表中)

 

 

 

 

还有一种方法:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值