SQL中分组函数的基本用法

  • 分组函数也成为多行处理函数,包含5个基本函数:
    count 计数
    sum 求和
    avg 平均值
    max 最大值
    min 最小值

  • 我们知道在表达式中如果出现NULL,就会使整个表达式结果为NULL,但上述5个分组函数在计算值时自动忽略值为NULL的数据。

  • 首先需要注意select语句的执行顺序
    我们知道select语句的书写顺序为:

		select
			...
		from
			...
		where
			...
		group by
			...
		order by
			...

上述的书写顺序不能乱,其次,最重要的是其执行顺序
1. from
2. where
3. group by
4. select
5. order by

  • group by为分组关键字(后面学习),分组函数必须要分组后才能使用,如果没有分组,则整张表默认为一组。

观察以下代码:

select ename,sal from emp where sal > min(sal);//报错。
select sum(sal) from emp;//正确。

出现上面的情况的原因为:
根据select语句的执行顺序,第一句由于where语句在group by后面执行,也就是还没有分完组,因此分组函数不能在where语句中直接使用;而第二句由于select语句在group by后面执行,因此就算没有写group by语句,系统也默认执行了一个空的该语句,也就是将整个表分为一组,所以可以直接在select语句中直接使用分组函数。

  • group by关键字的使用:
    注意分组默认将值一样的分为一组
    eg:找出每个工作岗位的工资和
			select 
				job,sum(sal)
			from
				emp
			group by
				job;

注意:select语句后面只能跟group by分组后的字段以及分组函数。

  • 如果想要找出“每个部门,不同工作岗位”的最高薪资? 我们可以在group by后面跟两个字段,联合分组来实现。
		select 
			deptno, job, max(sal)
		from
			emp
		group by
			deptno, job;
  • 另外还介绍一个having关键字,该关键字只在group by之后使用,作用为筛选分组之后的数据,和where有类似之处,因此如果可以,尽量使用where而不使用having,在where实在解决不了时,比如需要对平均值进行筛选,而where不能使用分组函数vag(),此时只能用having.
select 
	deptno,avg(sal) 
from 
	emp 
group by 
	deptno
having
	avg(sal) > 2500;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值