ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对数据分组的深入理解

2021-04-26 19:01:44  阅读:139  来源: 互联网

标签:count sex 理解 深入 select sid 分组 统计


   对数据分组的深入理解    

1,为什么要分组?

 答:分组后方便统计,需要返回多行信息就必须要分组

如:

 判断各种性别的人数的结果:

 sex       人数

 男        ?

 女        ?

返回的结果不止一行,所以一定要进行分组!

2,如何进行分组(分组的原理),举例说明

答:将查询对象按一定条件分组,然后对每一组进行聚合分析.

如:

如果要统计所有学生人数
select count(*) from stu
如果要统计所有男生人数
select count(*) from stu where sex='男'

上面的统计都只需要一次,因为将返回的所有数据当作了一个组

有时需要对返回的数据集同时进行多次统计(如同时求男生人数和女生人数),这就需要根据某个条件将数据分开(根据性别将学生分成2个组)),这个分开的动作就叫  分组。

3,下面SQL错误的原因是什么?

select sex,sid,count(sid)
  from stu
  group by sex

答:sid字段错误! 当进行sex分组后,sid可能有多个值,这时如果直接查询sid,不能确定返回那个sid;而count(sid)就能返回一个确定的值,因为count(sid)是一个统计函数!

注:

a,分组以后,每个组所返回的值必须确定!

b,分组以后,个体的信息全部丢失!即分组以后,是无法查询个人的信息的!

4,如何进行多字段分组,举例说明?

答:在group by 之后跟上你要根据什么分组的多个字段,用逗号隔开!

如:

select count(sid)

from t_class

group by class,sex;

分析:假如只有两个班,先根据班级分成2组,在根据性别分组,这样便有四行记录,这样便可以分别统计各班的男女人数!

5,where和having有什么区别!

答:where里不能有聚合函数,因为where在group by之前执行,此时没有进行分组统计,所以不能用统计函数;用于对表的原始记录进行过滤,选择符合条件的记录!

having中可以有聚合函数,是因为having在group by 之后执行,所以可以用统计函数!即只有分组后,统计函数才能写在:select和having里;用于对表的统计结果再次执行过滤筛选!

6,如何理解sql的执行顺序?

答:

1. FROM 指定要操作的表
2. WHERE 对表过滤
3. GROUP BY 对表分组,执行SELECT 操作与统计操作
4. HAVING 对统计结果再次过滤
5       最后对结果进行排序


标签:count,sex,理解,深入,select,sid,分组,统计
来源: https://blog.51cto.com/u_15078738/2735206

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有