(ORACLE)PL/SQL 表的复杂查询

本文详细介绍了如何在Oracle数据库中进行复杂的PL/SQL查询,包括聚合函数的应用,如显示最高、最低工资,平均工资等;使用group by和having子句进行数据分组;多表查询,如笛卡尔集、自连接和子查询;以及如何通过union、union all、intersect和minus进行结果集合并。通过对scott用户下emp表的实例演示,深入理解这些高级查询技巧。

表的复杂查询

在实际应用中,常常需要执行复杂的数据统计,经常需要显示多张表的数据现在我们来学习比较复杂的select的语句。我们将继续使用scott用户下emp表作为示例。

聚合函数

MAX函数:
对一列取最大值
MIN函数:
对一列取最小值
AVG函数:
对一列取平均值
SUM函数:
对一列求和
COUNT 函数:
统计该列有多少行

如果列里面有分组函数,那其他列必须是分组函数

显示所有员工中的最高工资和最低工资

select max(sal),min(sal) from emp;

在这里插入图片描述

显示所有员工的平均工资和工资总和

select avg(sal) “平均工资”,sum(sal) “工资总和” from emp;

在这里插入图片描述

计算有多少员工

select count(ename) “员工总数” from emp;

在这里插入图片描述

显示工资最高的员工名字和工作岗位

select ename,job from emp where sal = (select max(sal) from emp);

在这里插入图片描述

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

select * from emp where sal > (select avg(sal) from emp);

在这里插入图片描述

group by 和 having 子句

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

显示每个部门的平局工资和最高工资并按部门分组 按部门编号升序排列

select * from (select avg(sal) as “平均工资”,max(sal) as “最高工资”,deptno as “部门编号” from emp group by deptno) order by “部门编号”;

在这里插入图片描述

显示每个部门的平局工资和最高工资并按部门和工作岗位分组 按部门编号升序排列

select * from (select avg(sal) as “平均工资”,max(sal) as “最高工资”,deptno as “部门编号”,job as “工作岗位” from emp group by deptno,job) order by “部门编号”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值