(第5讲)复杂查询

1、数据分组函数:max / min /avg /sum /count

显示所有员工中最高工资和最低工资:select max(sal),min(sal) from emp;

显示所有员工中最高工资及其对应的员工名: select ename,sal from emp where sal=( select max(sal) from emp);

显示所有员工的平均工资:select avg(sal) from emp;

显示工资低于平均工资的员工信息:select * from emp where sal<(select avg(sal) from emp);

显示所有员工的工资总和:select sum(sal) from emp;

显示共有多少员工: select count(*) from emp;

COUNT(*)返回表的所有纪录数,而COUNT(expression)则返回符合表达式计算结果的非空纪录数。通常情况下,COUNT(DISTINCT expression)将相同的纪录只计算为一个。

2、group  by 和 having子句

group  by:用于对查询的结果分组统计

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

select avg(sal),max(sal),deptno from emp group by deptno ;

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

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


having子句:用于限制分组显示结果

显示平均工资低于2000的部门号和他的平均工资:

select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)>2000 ;

数据分组的总结:

(1)分组函数只能出现在选择列表、having、order by子句中

(2)如果在select语句中同时包含有group by、having 、order by,那么他们的顺序是:

group by、having 、order by;

(3)在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在

group by 子句中,否则会出错;

eg: select deptno,avg(sal),max(sal) from emo group by deptno having avg(sal)>2000 order by avg(sal);

3、多表查询:

多表查询是指基于两个或两个以上的表或是视图的查询。

显示雇员名、雇员工资以及所在部门的名字:

select a1.ename,a1.sal,a1.dname from emp a1,dept a2 where a1.deptno=a2.deptno;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值