对group by的一些理解
对group by的一些理解。
一直对sql中的group by使用的很少,也一直一知半解,今日有幸听到大佬的解读,觉得很有道理,查看网上的说明,觉得不便于理解,故特此记录此理解方式:
group by的作用是对by后面的类别进行分组,这个类别可以是一个也可以是多个,此外group by是先排序后分组。然后select中的东西必须是group by后面的内容,或者是聚合函数,否则就会报错,理解如下:
group by函数会先把数据集分组,并且一个分组对应一个类别,可以这样理解:也就是说类别列被压缩成一个了,而其他列还是正常。这样一来,如果再select中还有其他列,比如姓名字段,那么就会报错,因为类别只有一个,而姓名有好多个,无法成表,于是报错。
这样一来便可以理解有group by的select语句必须是类别名或者是聚合函数这一点了。
这里再记录多个列作为分组依据的情况: 图片来源于他人博文
我们看到使用group by all了之后“摘要”字段便变成了a2001,a2002。。。,可以看出这是在group by过程中将两列合并压缩了,实际上两列变成了一个字段,然后这个新字段相同的合并分组。