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

 更新时间:2022年01月02日 10:08:59   作者:方觉夏  
大家好,本篇文章主要讲的是聚合函数和group by的关系详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

前言

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的关系详解的文章就介绍到这了,更多相关聚合函数和group by内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • eXtremeDB 6.0正式发布:提高扩展性和分布式查询速度

    eXtremeDB 6.0正式发布:提高扩展性和分布式查询速度

    这篇文章主要介绍了eXtremeDB 6.0正式发布:提高扩展性和分布式查询速度,本文详细介绍了全新的eXtremeDB 6.0的一些特性,需要的朋友可以参考下
    2014-10-10
  • 大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用

    大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用

    本文主要介绍了大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • PowerDesigner数据库建模使用详细教程

    PowerDesigner数据库建模使用详细教程

    这篇文章主要介绍了PowerDesigner 数据库建模使用详解,利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型、面向对象模型,使用PowerDesigner可以帮助开发者快速的完成数据库建模相关的工作,从而助力提升整个软件项目的开发效率,需要的朋友可以参考下
    2023-07-07
  • 在ACCESS和SQL Server下Like 日期类型查询区别

    在ACCESS和SQL Server下Like 日期类型查询区别

    Like 和日期类型在ACCESS和SQL Server的区别,需要的朋友可以参考下。
    2009-10-10
  • YII2数据库查询实践

    YII2数据库查询实践

    这篇文章主要介绍了YII2数据库查询实践的相关资料,需要的朋友可以参考下
    2016-01-01
  • RBAC简介_动力节点Java学院整理

    RBAC简介_动力节点Java学院整理

    这篇文章主要介绍了RBAC简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • sql 左连接和右连接的使用技巧(left join and right join)

    sql 左连接和右连接的使用技巧(left join and right join)

    今天做项目,发现左右连接是不一样的。主要是说明了区别,是不是必须用左连接或右连接,大家可以根据需要选择。
    2010-05-05
  • 详解关于Dbeaver的常用操作

    详解关于Dbeaver的常用操作

    这篇文章主要介绍了详解关于Dbeaver的常用操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • SQL中case when then else end用法实例

    SQL中case when then else end用法实例

    CASE WHEN THEN ELSE END是一个固定搭配,这样排列是想把通过格式把逻辑展示出来,CASE告诉计算机接下来是条件句式了,下面这篇文章主要给大家介绍了关于SQL中case when then else end用法的相关资料,需要的朋友可以参考下
    2023-02-02
  • 一次因表变量导致SQL执行效率变慢的实战记录

    一次因表变量导致SQL执行效率变慢的实战记录

    这篇文章主要给大家介绍了一次因表变量导致SQL执行效率变慢的实战记录,本文通过图文以及示例代码介绍的非常详细,对大家学习或者了解sql具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11

最新评论