组函数

组函数:对查询的结果进行分组,每组给出一个输出结果(一行)

※ group by与having

group by 基于某列进行分组,标准就是列中值相同的分为一组
having 对分组之后输出的结果行进行限定,可以不出现,一出现只能在group by后面
※ 语法:

select
from table_name…
where 条件限定(对from查询的结果每一行筛选)
group by column_name,column_name1…
having 条件限定
order by

执行顺序:from->where->group by->having->select->order by

注意:
1.where后不能跟分组函数,where在group by后面执行
2.group by后面出现的列可以出现在select后面
group by后面没有出现的列一定不可以出现在select后面
3.组函只能出现在select ,having 和order by后面

※ 组函数(不用group by,组函数把整张表作为一个组看待)

※ 1. avg 求平均值

select avg([distinct] salary)
from s_emp;
(注:分组后select不能跟列)

※ 2. count统计多少行

select count([distinct] salary)
from s_emp;

※ 3. max求出组中的最大值 /min求出组中的最小值

select max(salary),min(salary)
from s_emp;

※ 4. stddev标准差

select stddev(salary)
from s_emp;

※ 5. sum求和

select sun(salary)
from s_emp;

※ 6. variance方差

select variance(salary)
from s_emp;

※ 组函数和group by结合,按照某列分组

※ 1. avg 求平均值
求出每一部门的平均工资

select avg([distinct] salary),dept_id
from s_emp
group by dept_id;
(注:分组后select不能跟列)

※ 2. count统计多少行
每一部门

select count([distinct] salary)
from s_emp
group by dept_id;

※ 3. max求出组中的最大值 /min求出组中的最小值
每一部门薪水最大、最小值

select max(salary),min(salary)
from s_emp
group by dept_id;

※ 4. stddev标准差
每一部门薪水标准差

select stddev(salary)
from s_emp
group by dept_id;

※ 5. sum求和
每一部门薪水求和

select sun(salary)
from s_emp
group by dept_id;

※ 6. variance方差
每一部门薪水方差

select variance(salary)
from s_emp
group by dept_id;

※ 案例:
查询s_emp表中部门的平均工资大于、等于1400的部门

select avg(salary),dept_id
from s_emp
group by dept_id
having avg(salary)>=1400
order by avg(salary) asc;

查询s_emp表中部门的平均工资大于等于1400的部门,并且显示出这些部门的名字,同时按照部门编号排序

select avg(s.salary),s.dept_id,d.name
from s_emp s,s_dept d
where s.dept_id=d.id
group by s.dept_id(d.id),d.name
having avg(s.salary)>=1400
order by s.dept_id asc;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值