当前位置:首页 > 数据库 > mysql中关于group的语句指令

mysql中关于group的语句指令

2022年09月16日 21:08:47数据库10

有成绩表如下,表名称是sc,字段s_id是学生编号,c_id是课程编号,score是课程成绩:

问题:求每位同学的平均成绩?

首先理解题意,分以下几步:

1.根据题意,可以想一下预期的结果是怎样的,应该有几个字段,有几条记录。本题应该有2个字段:学生编号、平均成绩,有7条记录(截图中s_id有七个非重复值);

2.预期的结果有7条记录,而源数据有18条记录,由多条变一条的过程是聚合,需要写聚合函数,而由多条变成比较少记录的过程是分组聚合,需要使用group by语句;

3.需要分组,那group by后面应该跟哪个字段,可以看下预期结果的字段里面,哪个是主键(非空不重复的字段),哪个就是分组字段。学生编号、平均成绩两个字段中,学生编号是主键,所以学生编号就是分组字段;

4.输出的字段写在select语句,from后面跟上表的名称,where后面跟筛选条件(没有可不写),group by 后面跟分组字段,所以这道题的写法如下:

select s_id,avg(score) as 平均成绩 from sc group by s_id;

分组聚合的过程是怎样的?

1.首先是分组,分组字段是s_id,把s_id一样的数据分到一个组,根据s_id把sc表分成七份,效果如下:

2.其次是聚合,聚合是由多变一的过程,就是每一个组变成一条记录,有聚合的取聚合的结果,没有聚合的取每个组的第一条记录,avg(score) 取每个组的成绩的平均成绩(avg是平均函数,属于聚合函数),s_id没有聚合,就取每个组的第一条记录,又因为每个组的s_id都一样,所以取一个是合理的。过程如下:

以上是使用mysql,自己总结的一些心得(也就是网上找不到的),可能不太精准,但可以适用于各种情况,欢迎指正~~

如果感觉有用,给个赞和关注哈,后面会经常更新数据分析相关文章!

作者:Alpha Zone
来源链接:https://blog.csdn.net/weixin_35683252/article/details/113144894

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/42357.html

标签: group by
分享给朋友:

“mysql中关于group的语句指令” 的相关文章

mysql查询语句 groupby后取组内时间最近的一条数据时间

mysql查询语句 groupby后取组内时间最近的一条数据时间

在mysql中使用group by进行分组后取时间最近的一条数据,我们可以直接使用MAX()函数来实现 SELECT T2.nick_name as nickName, count(T1.shared_user_id) AS...

MySQL中 (GROUP BY 用法)和(ORDER BY用法)

MySQL中 (GROUP BY 用法)和(ORDER BY用法)

一、GROUP BY(分组) 例子: SELECT sum(id) as aa_id, max(id) as m_id, message FROM device_shadow_log GROUP BY message ORDER BY aa_id DESC 1...

where,group by,having,order by执行顺序和编写顺序

当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序 使用count(列名)当某列出现null值的时候,count(*)仍然会计算,但是count(列名)不会。 二、数据分组(group b...

mysql group by 用法解析(详细)

group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 某个员工信息表结构和数据如下:   i...

oracle group by执行慢,一次对group by时间导致的慢查询的优化

oracle group by执行慢,一次对group by时间导致的慢查询的优化

前言: 最近在测试环境中点击一个图表展示页面时,半天才得到后台响应的数据进行页面渲染展示,后台的响应很慢,这样极大的降低了用户的体验; 发现这个问题后马上进行了排查 ,通过排查发现是由一个查询很慢的 group by 语句导致的; 本文...

优化 Group By -- MYSQL一次千万级连表查询优化(转)

优化 Group By -- MYSQL一次千万级连表查询优化(转)

概述: 交代一下背景,这算是一次项目经验吧,属于公司一个已上线平台的功能,这算是离职人员挖下的坑,随着数据越来越多,原本的SQL查询变得越来越慢,用户体验特别差,因此SQL优化任务交到了我手上。  这个SQL查询关联两个数据表,一个是攻击IP用户表主要是记录IP的...

Mysql Group by函数用法详解

Mysql Group by函数用法详解

应用场景: 现有表student如下: 需求描述: 需要查询1班的人数: 使用语句: SELECT count(*) from student where class_name ='1班'; 结果显示:...

MySQL GROUP BY 语句使用总结

MySQL GROUP BY 语句使用总结

MySQL GROUP BY 语句使用总结 大家好,我是Yangrl. 总结一下MySQL中查询记录操作中的GROUP BY语句,查遗补漏。 表名:testusers,字段记录如图,以前create的直接拿来用,将就一下。(懒即生产力)...

mysql8.0遇到的一个坑(group by 分组 sql语句的用法)

使用 sql 查询时 mysql 报如下错误, 完整报错如下: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated col...

mysql通过group by分组取最大时间对应的数据,提供两种有效方法。

mysql通过group by分组取最大时间对应的数据,提供两种有效方法。

1、项目记录表project_record的结构和数据如下: 以下为项目记录表project_record的所有数据。project_id为项目Id,on_project_time为上项目时间。(每一条数据代表着上某个项目(project_id)的时间(on_pro...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。