首页 > 其他 > 详细

对于 group by 个人理解

时间:2020-04-13 19:17:34      阅读:54      评论:0      收藏:0      [点我收藏+]

Group By

技术分享图片

group by 顾名思义就是对数据进行分组。或者理解为将数据,按照进行分组的字段,进行去重操作,该字段下每个值只保留一份数据。

但是该如何对该group下的所有数据信息进行操作,比如说我想对该分组的数据信息进行统计展示,此时就需要使用聚合函数。

HAVING相当于条件筛选,但它与WHERE筛选不同,HAVING是对于GROUP BY对象进行筛选。

还有一种使用方式:将group分组后的数据作为临时表,再使用select 针对查询。

select data.Email  from 
(select *,count(*) as numbers from person group by Email ) as data 
where data.numbers >1;

Group 个人感觉就是一个语法糖,主要步骤如下:以group by email分类

  1. 先把表按照指定的分组拆分成n个小表。注意差分表的过程中会去掉不符合where条件的数据记录

    这里的每个小表的email字段都是相同的。

  2. 按照约束条件,如select count(),having count将每个小表中的记录进行处理,一般只能进行统计类操作,如求均值,求最大值此类

  3. 再在每个小表中取一条数据。

    1. 如果存在聚合函数,就返回聚合函数的结果 + 小表中的第一条数据 拼接出来的数据记录
    2. 不存在聚合函数,直接返回小表记录的第一条
  4. 最后将每个小表返回的那一条记录值,拼接为一整个完整的表。


对于 group by 个人理解

原文:https://www.cnblogs.com/jianga/p/12693163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!