欢迎来到代码驿站!

当前位置:首页 >

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

时间:2023-02-12 10:53:07|栏目:|点击:

前言

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

聚合函数介绍

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

group by介绍

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

结果为

在这里插入图片描述

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

在这里插入图片描述

结果执行后查询出来 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的字段名删除,查看结果是否统一,作为印证。

在这里插入图片描述

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

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

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

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

尝试执行下列SQL语句:

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

在这里插入图片描述

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

总结

上一篇:网络安全渗透测试小程序抓包流程步骤详解

栏    目:

下一篇:易语言设置编辑框滚动条与滚动条方式的方法

本文标题:聚合函数和group by的关系详解

本文地址:http://www.codeinn.net/misctech/225596.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有