先来看下表1,表名为test:

表1

  执行如下SQL语句:

1

2

SELECT name FROM test

GROUP BY name

  你应该很容易知道运行的结果,没错,就是下表2:

表2

  可是为了能够更好的理解“group by”多个列“”聚合函数“的应用,我建议在思考的过程中,由表1到表2的过程中,增加一个虚构的中间表:虚拟表3。下面说说如何来思考上面SQL语句执行情况:

1.FROM test:该句执行后,应该结果和表1一样,就是原来的表。

2.FROM test Group BY name:该句执行后,我们想象生成了虚拟表3,如下所图所示,生成过程是这样的:group by name,那么找name那一列,具有相同name值的行,合并成一行,如对于name值为aa的,那么<1 aa 2>与<2 aa 3>两行合并成1行,所有的id值和number值写到一个单元格里面。

3.接下来就要针对虚拟表3执行Select语句了:

(1)如果执行select *的话,那么返回的结果应该是虚拟表3,可是id和number中有的单元格里面的内容是多个值的,而关系数据库就是基于关系的,单元格中是不允许有多个值的,所以你看,执行select * 语句就报错了。

(2)我们再看name列,每个单元格只有一个数据,所以我们select name的话,就没有问题了。为什么name列每个单元格只有一个值呢,因为我们就是用name列来group by的。

(3)那么对于id和number里面的单元格有多个数据的情况怎么办呢?答案就是用聚合函数,聚合函数就用来输入多个数据,输出一个数据的。如cout(id),sum(number),而每个聚合函数的输入就是每一个多数据的单元格。

(4)例如我们执行select name,sum(number) from test group by name,那么sum就对虚拟表3的number列的每个单元格进行sum操作,例如对name为aa的那一行的number列执行sum操作,即2+3,返回5,最后执行结果如下:

(5)group by 多个字段该怎么理解呢:如group by name,number,我们可以把name和number 看成一个整体字段,以他们整体来进行分组的。如下图

(6)接下来就可以配合select和聚合函数进行操作了。如执行select name,sum(id) from test group by name,number,结果如下图:

(已失效)文章出处:理解group by和聚合函数

注意:mysql对group by 进行了非ANSI标准的扩展,允许select后含有非group by 的列。

Group by 分组详解相关推荐

  1. 用户管理 之 用户(User)和用户组(Group)配置文件详解

    作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...

  2. 用户(User)和用户组(Group)配置文件详解

    用户(User)和用户组(Group)配置文件详解 作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(Us ...

  3. Mysql分组查询group by语句详解

    (1) group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组 (2) group by可用于单个字段分组,也可用于多个字段分组 select * from employee ...

  4. Apache Sentry 第一弹:Server启动、连接Hue、分组详解

    2019独角兽企业重金招聘Python工程师标准>>> 前言: Sentry是Hadoop安全方面的一个开源组件,目前还在孵化中,地址:https://sentry.incubato ...

  5. mysql语句group by用法详解

    原文地址:https://www.cnblogs.com/snsdzjlz320/p/5738226.html group by group by + group_concat() group by ...

  6. group by用法 mysql_MYSQL GROUP BY用法详解

    背景介绍 最近在设计数据库的时候因为开始考虑不周,所以产生了大量的重复数据.现在需要把这些重复的数据删除掉,使用到的语句就是Group By来完成.为了进一步了解这条语句的作用,我打算先从简单入手. ...

  7. mysql的groupby_MYSQL GROUP BY用法详解

    背景介绍 最近在设计数据库的时候因为开始考虑不周,所以产生了大量的重复数据.现在需要把这些重复的数据删除掉,使用到的语句就是Group By来完成.为了进一步了解这条语句的作用,我打算先从简单入手. ...

  8. Linux入门之磁盘管理与inode表和group表(详解)(CentOS)

    磁盘管理 设备分类 字符设备 块设备 硬盘分类 机械硬盘 固态硬盘 区别 磁盘分区 分区方式 MBR分区 示例 GPT分区 BIOS+MBR与UEFI+GPT 文件系统 文件系统分类 mkfs命令 i ...

  9. group convolution (分组卷积)的计算量详解、卷积计算量特征图大小,池化特征图大小、深度通道deep-wise 卷积

    group convolution (分组卷积)的计算量详解.卷积计算量特征图大小,池化特征图大小.深度通道deep-wise 卷积 提示:最近忙着各种提前批的笔试面试,所以没太多空刷题了都,先复盘一 ...

最新文章

  1. 用群体测试开发成功的应用程序
  2. MyBatis查询两个字段,返回Map,一个字段作为key,一个字段作为value的实现
  3. 关于mysql的调优
  4. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统(附源码+视频教程(第9节))...
  5. hdu 2563
  6. windows下配置java
  7. Scala学习(二)--- 控制结构和函数
  8. Leetcode1512. 好数对的数目 抽出本质原型 利用范围条件
  9. GCD简介三:Dispatch Sources
  10. PHP中时间和日期函数总结
  11. 射线计算机,面对射线-射频-计算机 我愿做“影像工匠师”
  12. 空间回归分析笔记3——OLS、GWR输出结果的意义
  13. SpringBoot整合J2Cache
  14. hahMap的括号中指定了数字表示是什么意思
  15. 二 名词性从句(2021-11-01)
  16. CGAL 4.11 官方文档 软件包概述 ——胞腔复形与多面体类
  17. ADG备库mrp和rfs进程
  18. 在StarRocks中建立ClickHouseJDBC外表
  19. 自然语言处理中的迁移学习(下)
  20. github 下载文件加速 https://moeyy.cn/gh-proxy/

热门文章

  1. Django 文档 | DjangoAdmin 文档 | Django
  2. php时间戳转换成日期格式,php时间戳如何转换为日期格式
  3. python中seth是什么意思_python中的seth有什么用
  4. t - 分布的区间估计
  5. ansys 内聚力模型_ANSYS Workbench有限元分析实例详解:静力学 PDF高清完整版
  6. 使用学校的服务器跑深度学习
  7. python下载电影_python下载电影
  8. 逃避条件作用和回避条件作用,两者的区别是?|小白心理-312/347考研答疑
  9. android webview获取Gps位置不准
  10. 如何优雅的研究 RGSS3 (三) 调整窗口的细节