聚合函数和group by的关系详解

作者:方觉夏 时间:2024-01-20 15:19:53 

前言

world:世界表格
continent:大洲名称
name:国家名称
population:人口数量

聚合函数介绍

sum()求和函数
avg()求平均值函数
max()求最大值函数
min()求最小值函数
count()求行数函数

group by介绍

group up + 字段名:规定哪个字段分组聚合
在单独使用使用时,作用为分组去重 结果与distinct一样,但是逻辑并不一样:先对字段值相同的分为一个区,再将同区的拿出来进行分组,对应多少值就分多少组。分组就是将相同的字段进行剔除。简单来说,就是打破了表格的格式生成了一张新的表格。

聚合函数和group by的关系详解

聚合函数和group by的关系详解

例如在上面这张表格就是执行group up后形成的分区结果,将相同的字段值分在了一起。下面的表格即是执行group by分组的结果,基于上面分区的结果,进行了去重的分组。

聚合函数和group by的关系详解

解释聚合函数和group by的关系

那么为什么使用group by会形成这样的结果呢?我们可以使用上聚合函数进行分析原因,执行下面一句SQL代码。

select continent,count(name) from world group by continent

结果为

聚合函数和group by的关系详解

那么我们试着将group by continent和continent去掉,得到以下结果

聚合函数和group by的关系详解

结果执行后查询出来 count(name) 就只是所有 name 这一列的行数的总合,并不能将每个大洲(continent)进行分组统计出来每个大洲所有国家(name)的数量。

这就是聚合函数和group by联合使用的作用,帮助聚合函数找到分组后的表格进行计算,在这一句

select continent,count(name) from world group by continent

SQL语句中是先进行了group by的分组,在进行select continent,最后在进行count(name),基于的就是group by后的分组进行计算。

我们可以将continent的字段名删除,查看结果是否统一,作为印证。

聚合函数和group by的关系详解

很明显我们无论有没有将continent进行显示,结果都是一样的。

通过这次测试,我们就可以得出相对应的结论:在group up执行的时候,就已经将表格生成出来了,select只是选择展示和不展示出来而已,对于结果并没有影响。而聚合函数的作用就是在生成出来新的表格内进行计算,舍弃了没有进行分组的表格。

使用group by和聚合函数需要注意的地方

在使用group up子句时,select只能使用聚合函数和group up引用的字段,否则会报错!

尝试执行下列SQL语句:

select continent,count(name),population from world group by continent

聚合函数和group by的关系详解

为什么会出现报错呢,因为在这句SQL语句中,group by已经先运行了,所以select不能出现在group by中没有的字段,只能基于在聚合依据的这个表中进行字段匹配。

来源:https://blog.csdn.net/thetheflower/article/details/122267999

标签:groupby,聚合函数
0
投稿

猜你喜欢

  • Python实现视频分解成图片+图片合成视频

    2022-12-14 05:26:12
  • 在Python中等距取出一个数组其中n个数的实现方式

    2023-10-18 10:03:10
  • 使用python进行拆分大文件的方法

    2022-06-23 17:54:04
  • Python calendar模块详情

    2023-08-20 23:04:59
  • 前端面试运行npm run xxx发生过程原理解析

    2024-04-28 09:34:14
  • 网站设计趋势: iPhones[译]

    2009-09-21 12:40:00
  • asp详解session的用法

    2007-09-07 10:22:00
  • asp如何对欲删除的记录确认后再删除?

    2009-11-20 18:48:00
  • Python随机生成彩票号码的方法

    2023-10-13 15:25:39
  • Python采集王者皮肤图片实战示例

    2021-08-02 12:09:23
  • go build失败报方法undefined的解决过程

    2023-06-18 15:07:36
  • python openpyxl使用方法详解

    2021-12-23 14:49:18
  • 有关将idea的系统配置文件移到其它盘激活失效的问题

    2022-02-16 09:33:37
  • PyQt5 显示超清高分辨率图片的方法

    2021-07-11 04:16:09
  • Oracle常用dump命令,记录一下备查。

    2009-03-04 10:27:00
  • pytorch模型预测结果与ndarray互转方式

    2023-12-06 02:35:11
  • Python中使用SAX解析xml实例

    2022-08-22 01:32:56
  • Python使用openpyxl读写excel文件的方法

    2021-02-06 07:24:37
  • 全网最新用python实现各种文件类型转换的方法

    2021-02-21 08:57:42
  • Python读取excel指定列生成指定sql脚本的方法

    2021-05-06 19:11:13
  • asp之家 网络编程 m.aspxhome.com