聚合函数+group by

聚合函数

常用的聚合函数有COUNT()、AVG()、SUM()、MAX()、MIN()。

  1. COUNT()函数:统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。

COUNT(*)计算表中总的行数,不管某列是否有数值或者为空值。
COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。

对于学生表来说:

  • 实例

COUNT:

统计班级共有多少个同学:

mysql> select count(*) from students;

统计同学QQ的个数(去重):

mysql> select count(distinct QQ) from students;
  1. AVG()函数:通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。

统计学生平均总分:

select avg(chinese + math + english) 平均总分 from students;
  1. SUM()函数:是一个求总和的函数,返回指定列值的总和。

SUM:

统计同学数学成绩总分:

mysql> select sum(math) from students;

统计同学数学成绩总分中<60的部分(没有结果就返回NULL):

mysql> select sum(math) from students where math < 60;
  1. MAX()函数:返回指定列中的最大值,不仅适用于查找数值类型,也可应用于字符类型。

统计英语最高分:

mysql> select max(english) from students;
  1. MIN()函数:返回查询列中的最小值,不仅适用于查找数值类型,也可应用于字符类型。

统计英语最低分:

mysql> select min(english) from students;

group by子句

对于员工表来说:

  • EMP员工表
  • DEPT部门表
  • SALGRADE工资等级表

显示每个部门的平均工资和最高工资(以部门分组):

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

显示每个部门的每种岗位的平均工资和最低工资(以部门和岗位分组):

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

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

首先要统计各部门的平均工资:

select avg(sal) from EMP group by deptno;

然后要取出其中<2000的部分:

select avg(sal) as myavg from EMP group by deptno having myavg<2000;

having其实类似于where,不同的是where是过滤表数据的,而having是过滤分组数据的。

对于查询语句来说,它们两个是可以同时存在的,先执行where过滤,再进行聚合,再进行分组,最后才是从分组里having过滤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值