mysql 分组排序 最大值_MySQL数分:汇总分析

1297cf6bf553c92bc40ae7360ee15931.png

开始之前,先考虑一个问题:如何计算各科的平均成绩并且得出平均成绩大于等于80分的课程并降序排列?

如果面试官问我们这么一道题,先不要着急,捋一下思路:

要计算每一门课程平均成绩,然后根据得出的结果,进行大于等于80分的条件查询,对查询结果进行降序排列。

这么看来,这道题便可以解决了~

接下来,我们需要解决的问题就是,每一步骤如何去解。

26174fc422fa76b0d8814051f394740d.png
以下实例均以此表为例

目录

  • 汇总函数
  • 分组
  • 对分组结果指定条件
  • 排序
  • 用SQL解决业务问题分析思路
  • 番外:练习篇

汇总函数

一开始的问题中,要求我们计算平均成绩,平均成绩用SQL怎么来计算?这便是我们这节的内容了,这里不仅仅介绍平均值,还有计数、求和、最大值、最小值的汇总函数的介绍。

先看一下本节导图:

8f60548053be860dba20b8215991391a.png

1)count() 求某列的行数

很容易理解,count(列名)就是求某列的行数,值得注意的一点是该列不会计算空值的行数。举例:

-- 查询共有几名教师
SELECT COUNT(教师姓名) FROM teacher;

855d229da2fa195addaff9d6fb8acd84.png
-- 查询教师表共有多少行
SELECT COUNT(*) FROM teacher;

980392af7e71d7f5c762f43106483318.png

可以看出,当对所有列count(*) ,结果就是行数的最大值;

如果列中有重复值,我们计数不想计算重复值,怎么办呢?我们可以使用distinct来解决:

-- 查询成绩表里共有几个学生的成绩
SELECT COUNT(DISTINCT 学号) FROM score;

e92b771b8a62cb129c8c991f875d4755.png

2)sum() 对某列数据求和

求和,就是对某一列的数值进行求和,只能对数值进行计算。举例:

--  对所有成绩求和
SELECT SUM(成绩) FROM score;

882011257f7ba88a6e74f121b4383789.png

3)avg() 对某列数值求平均值

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值