关于sql语句group by 的具体原理详解

我们遇到一个表,有时候会需要进行按所需要的字段来进行分组查询,有时候还需要使用聚合函数来进行对数据进行筛选或者统计;
那么到底group by 的原理具体是什么样的呢?
下面我就来说一下:
首先group by 是将表的内容按你所需要的分组字段进行分组;
例如:
±-----±-----±-----±-----±-----+
| year | m1 | m2 | m3 | m4 |
±-----±-----±-----±-----±-----+
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
±-----±-----±-----±-----±-----+
一开始表是这样的:
如果我们按year进行分组的话,那么会分成两部分
±-----±-----±-----±-----±-----+
| year | m1 | m2 | m3 | m4 |
±-----±-----±-----±-----±-----+
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1991 | 1.1 | 1.2 | 1.3 | 1.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
| 1992 | 2.1 | 2.2 | 2.3 | 2.4 |
±-----±-----±-----±-----±-----+
例如图二这样,如果你使用了聚合函数,那么聚合函数会根据你分了几个组,在各个组的区间内将对应的数据进行聚合操作;
例如:如果我使用的是:
select year,max(m1) from aaa(表名) group by year;
那么这时将会对数据
| 1.1 | 1.2 | 1.3 | 1.4 |
| 1.1 | 1.2 | 1.3 | 1.4 |
| 1.1 | 1.2 | 1.3 | 1.4 |
1.1 | 1.2 | 1.3 | 1.4 |
中的m1的选项也就是四个1.1 进行求最大值;
同理对
| 2.1 | 2.2 | 2.3 | 2.4 |
| 2.1 | 2.2 | 2.3 | 2.4 |
| 2.1 | 2.2 | 2.3 | 2.4 |
| 2.1 | 2.2 | 2.3 | 2.4 |
中的四个2.1求最大值;
这就是分组聚合的原理;对于其他的聚合函数也一样;
先进行分组,在对数据进行函数的聚合;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值