【MySQL】分组查询(GROUP BY)

【MySQL】分组查询(GROUP BY),第1张

MySQL中使用 GROUP BY数据进行分组,GROUP BY从字面意义上理解就是根据'BY'指定的规则对数据进行分组, 所谓分组就是将一个'数据集'划分成若干个'子区域',然后针对若干个'小区域'进行数据处理 。基本语法形式为:

字段值为进行分组时所依据的列名称, “HAVING <条件表达式>” 指定满足表达式限定条件的结果将被显示。

GROUP BY关键字通常和集合函数一起使用,例如:MAX()、MIN()、COUNT()、SUM()、AVG()。即把数据分为多个逻辑组,并对每个组进行集合计算。

WHERE 子句过滤行,在数据分组前过滤;HAVING 子句过滤分组,在数据分组后过滤。WHERE排除的行不包括在分组里,且HAVING支持所有WHERE *** 作符。

使用GROUP BY可以对多个字段进行分组,根据多字段的值来进行层次分组,分组从左到右。

注意事项:

GROUP BY dept,name 的意思,就是先按dqpt分组,如果出现dept相同的,再按name分组,也就是说除非出现dept和name都相同的记录才会合为一组,否则的话是不会合在一起的,这样的话显示出的name就只有一个了。

你用现实生活中的例子来理解一下就很明白啦:比如说你们班上的同学如果按性别来分组,可以分为两组,如果按照姓名来分组,那就基本上有多少个同学就有多少组(除非有同名同姓的),那如果按性别和姓名同时分组呢,那分的组就是同学数的两倍了,即“男的张三”一组,“女的张三”一组,“男的李四”一组,“女的李四”一组……当然,这其中有一半的组是空的,剩下的也是每一组只有一个人啊!理解没有?

所以 Group by 后面的分组字段不是随便加的,多个字段的分组是需要排列组合的,分的组数会按几何级数增长!

补充说一句:本来按名字来分组就是个愚不可及的想法了!更何况还要加上其他分组条件,这样的话基本上就是一组只有一个了!

这两者本质上应该没有可比性,distinct 取出唯一列,group by 是分组,但有时候在优化的时候,在没有聚合函数的时候,他们查出来的结果也一样。

一、group by

英 [ɡru:p bai]   美 [ɡrup baɪ]

[计][WIN]分组依据

拓展资料

1、This operator also serves as input to the Group By operator.

该 *** 作符还充当Group By *** 作符的输入。

2、Complete the following steps to create and program the Group By operator.

完成以下步骤,创建Group By *** 作符并对它进行配置。

3、With the appropriate access path, the ORDER BY or GROUP BY requirement can be met without sorting.

使用恰当的访问路径,无需排序即可满足ORDER BY或GROUP BY需求。

4、Drag it to the right of the Group By operator.

将它拖放到Group By *** 作符的右边。

二、distinct

英 [dɪˈstɪŋkt]   美 [dɪˈstɪŋkt]

adj.明显的,清楚的卓越的,不寻常的有区别的确切的

拓展资料

1、I have distinct memories of him in his last years.

我清楚地记得他最后几年的情况。

2、Another Cup marathon between the two sides is now a distinct possibility.

双方很可能再进行一场马拉松式的优胜杯比赛。

3、The photograph showed a distinct image.

照片显出了明晰的影像。

4、I want a distinct answer to my question.

我要求对我的问题作出明确的答复。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6176432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存