首页 > 其他 > 详细

从group by 展开去

时间:2017-11-01 22:08:55      阅读:263      评论:0      收藏:0      [点我收藏+]

一、概念

  “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。既然是要针对若干个“小区域”进行数据处理,那就肯定是与sql的聚合函数搭配起来使用。

二、建表

  这里在我使用经常练习sql的一个数据库里的建一张表,表明:demo

  技术分享

三、简单group by练习

  SELECT Sage,avg(Sscore) FROM t_student GROUP BY Sage;

  结果为

  技术分享

四、遇到问题

  当我使用Oracle写一个这样的sql 时,就会报错:SELECT Ssex, Sage,avg(Sscore) FROM t_student GROUP BY Sage;

  这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。

  但是我在MySQL中运行这段sql却可以正常运行,不过现实的结果明显是不符合逻辑的。

五、聚合函数

  group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中。除了avg()函数外,还有这些聚合函数,

  技术分享

六、having 与 where之间的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

 

从group by 展开去

原文:http://www.cnblogs.com/assasion/p/7768734.html

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