咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 866|回复: 2

[数据库其它] 聚合函数和group by的关系详解

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2022-1-10 16:15:15 | 显示全部楼层 |阅读模式
    目录

      前言聚合函数介绍group by介绍解释聚合函数和group by的关系使用group by和聚合函数需要注意的地方总结


    前言

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

    聚合函数介绍

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

    group by介绍

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

    聚合函数和group by的关系详解-2.png

    例如在上面这张表格就是执行group up后形成的分区结果,将相同的字段值分在了一起。下面的表格即是执行group by分组的结果,基于上面分区的结果,进行了去重的分组。
    聚合函数和group by的关系详解-3.png


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

    那么为什么使用group by会形成这样的结果呢?我们可以使用上聚合函数进行分析原因,执行下面一句SQL代码。
    1. select continent,count(name) from world group by continent
    复制代码
    结果为
    聚合函数和group by的关系详解-4.png

    那么我们试着将group by continent和continent去掉,得到以下结果
    聚合函数和group by的关系详解-5.png

    结果执行后查询出来 count(name) 就只是所有 name 这一列的行数的总合,并不能将每个大洲(continent)进行分组统计出来每个大洲所有国家(name)的数量。
    这就是聚合函数和group by联合使用的作用,帮助聚合函数找到分组后的表格进行计算,在这一句
    1. select continent,count(name) from world group by continent
    复制代码
    SQL语句中是先进行了group by的分组,在进行select continent,最后在进行count(name),基于的就是group by后的分组进行计算。
    我们可以将continent的字段名删除,查看结果是否统一,作为印证。
    聚合函数和group by的关系详解-6.png

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

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

    在使用group up子句时,select只能使用聚合函数和group up引用的字段,否则会报错!
    尝试执行下列SQL语句:
    1. select continent,count(name),population from world group by continent
    复制代码
    聚合函数和group by的关系详解-7.png

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

    总结

    到此这篇关于聚合函数和group by的关系详解的文章就介绍到这了,更多相关聚合函数和group by内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

    原文地址:https://www.jb51.net/article/233513.htm
  • TA的每日心情
    开心
    2023-5-29 08:20
  • 签到天数: 3 天

    [LV.2]圆转纯熟

    发表于 2023-5-17 16:19:55 | 显示全部楼层
    感谢楼主,感谢楼主
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2023-8-10 08:47
  • 签到天数: 6 天

    [LV.2]圆转纯熟

    发表于 2023-7-26 09:43:03 | 显示全部楼层
    膜拜神贴,后面的请保持队形 ~www.2nzz.com
    回复 支持 反对

    使用道具 举报

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 18:34

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表