Mysql数据库学习笔记 高级查询 2020-2-10

高级查询

分组函数
min ( ) 最小值
例:查询员工工资最低的钱数 --(sal 列所有数据的最小值)
select min(sal) from emp

max ( ) 最大值
例:查询员工工资最高的钱数 --(sal 列所有数据的最大值)
select max(sal) from emp

avg ( ) 平均值
例:查询所有员工的平均工资 --(sal 列所有数据的平均值)
select avg(sal) from emp
注:如果为空值,则不计算在内
例如avg(comm)相当于 sum(comm)/count(comm) 而不等同于 sum(comm)/count(*)

sum ( ) 总和
例:查询所有员工的工资总和 --(sal 列所有数据的和)
select sum(sal) from emp

count ( ) 总数(查询到的数据(不为空的)条数)
例:查询公司员工总数
注:
count( * ) 只要这条数据不全为空,就计1
count(列名) 当本条数据的 ‘列名’ 列不为空 时计1
例:
select count(*) from emp —>(结果为14)
select count(comm) from emp —>(结果为4)

distinct 进行去重
先执行distinct去掉重复行后,再执行分组函数
例:查询emp表中总共有多少种岗位
select count(distinct job) from emp

按多列分组
关键词:group by
例:查询每个部门每个岗位的工资总和
select deptno,job,sum(sal),count(*) from emp group by deptno,job

select 子句在group by 子句之后执行
where 子句在group by子句之前执行

在group by子句 之前执行的子句 不能写分组函数
在group by分组之后 如果想加限定条件,只能使用having子句
例:按照部门编号分组 查询每个部门 工资最高值要求展示最高工资大于2900
select deptno,max(sal) from emp group by deptno having max(sal)>2900

查询语句执行顺序
from
where
group by
having
select
order by
limit

练习:
1.查询每个部门的部门编号,部门名称,部门人数,最高工资,最低工资,工资总和,平均工资。
select dept.deptno,dept.dname,count(),max(sal),min(sal),sum(sal),avg(sal) from emp join dept on(emp.deptno=dept.deptno) group by dept.deptno,dept.dname
2.查询每个部门,每个岗位的部门编号,部门名称,岗位名称,部门人数,最高工资,最低工资,工资总和,平均工资。
select b.deptno,b.dname,a.job,count(
),max(sal),min(sal),sum(sal),avg(sal)
from emp a join dept b on(a.deptno=b.deptno)
group by deptno,job
3.查询每个经理所管理的人数,经理编号,经理姓名,要求包括没有经理的人员信息。
select count(*),a.empno,a.ename from emp a right outer join emp b on(a.empno=b.mgr) group by a.empno,a.ename

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值