数据库Oracle 表连接&&分组

SQL

分组

分组: group by , 将符合条件的记录 进一步的分组

在这里插入图片描述

过滤组:having, 过滤组信息 ,表达式同where 一致

在这里插入图片描述

现在的结构如下

select distinct * | 字段 | 表达式 | 函数 as 别名
 from 表 表别名
where 过滤行记录条件
group by 分组字段列表
having 过滤组
order by 字段列表 asc | desc

解析步骤

1)from 2)where 3)group 4)having 5)select  6)order by

group by : 分组

  1. select出现分组函数,就不能使用 非分组信息,可以
    使用group by 字段

  2. group by字段 可以不出现 select 中 ,反之select 除
    组函数外的,其他字段必须出现在group by中

having : 过滤组

  1. where : 过滤行记录,不能使用组函数
  2. having : 过滤组 可以使用组函数
--按 部门 查询 平均工资
select avg(sal) from emp group by deptno;
--按 部门岗位 查询 平均工资
select avg(sal) from emp group by deptno,job;
--按 部门 查询 平均工资,且平均工资大于2000的部门编号
--1、先分组 后过滤 (不推荐)
select *
from (select deptno, avg(sal) avsal from emp
where 1 = 1 group by deptno)
where avsal > 2000;
--2、过滤组 ,分组同时 过滤
select avg(sal), deptno from emp group by
deptno having avg(sal)>2000;

--查询 最低平均工资的部门编号
--1)、按部门求出平均薪水
select avg(sal) from emp group by deptno;
--2)、找出最低的平均薪水
select min(avg(sal)) from emp group by deptno;
--3)、过滤组
select deptno
 from emp
where 1 = 1
group by deptno
having avg(sal) = (select min(avg(sal)) from
emp where 1 = 1 group by deptno);
--查看 高于本部门平均薪水员工姓名
--1、按部门求出平均薪水
--2、关联子查询
select *
 from emp e
where exists
(select deptno
     from <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值