问题描述:

表A{id, name},表B{id, course, score}。求每名学生的 id 和 name 和平均成绩

CREATE TABLE `student` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`name` VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`)
);CREATE TABLE `score` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`course` VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`score` INT,`stu_id` BIGINT(20) NULL DEFAULT NULL,PRIMARY KEY (`id`),INDEX (`stu_id`),FOREIGN KEY (`stu_id`) REFERENCES `student`(`id`)
);

// 标准答案:

SELECT s.`id`,s.`name`,sc.avgscore FROM student s INNER JOIN(
SELECT t.`stu_id`, AVG(t.`score`) AS avgscore FROM score t GROUP BY t.`stu_id`
)sc ON s.`id`=sc.`stu_id`

分析:

这也算是学习到的教训,MySQL5.7 之后要严格遵循Group By语句规则,select查询字段必须完全对应Group By后面的字段及其函数(SUM,AVG…)
如果查询了其他字段,MySQL就会报错:1055 error

看了网上的所有做法,都是更改MySQL配置,使其不报错,这种方法不可取,感觉有点掩耳盗铃,下次遇到Group By我应该会多长个心眼了。

这道题其实就是子查询 + 分组,基础也要靠多练习啊

SQL编写:表A{id, name},表B{id, course, score}。求每名学生的 id 和 name 和平均成绩相关推荐

  1. SQL查询语句(从单表到多表、从简单到复杂)

    数据库sql语句及字段名不区分大小写,值必须一一对应 1.创建三张表,学生表.选课表.成绩表 CREATE TABLE student(Sno varchar(20) NOT NULL,Sname v ...

  2. 查询列名在哪张表_探索SQL-多表查询

    一.表的加法(Union) 1.用法:将两个表合并成一个表 2.语句: select 查询结果 from 从哪张表查询 union select 查询结果 from 从哪张表查询 *需保留重复行* s ...

  3. Mysql单表查询和多表查询

    单表查询 一 单表查询的语法 #查询数据的本质:mysql会到你本地的硬盘上找到对应的文件,然后打开文件,按照你的查询条件来找出你需要的数据.下面是完整的一个单表查询的语法select * from, ...

  4. MySQL 新增表中的数据为另外一个或多个表的数据(业务场景:创建关系表,复制旧表数据到新表)

    问题 昨天同学问了我个问题 我想写个sql脚本,循环插入数据,数据是另一个表中的a.b字段 A表中的a.b字段数据,循环加入B表中a.b字段.就是这个意思 我问他为什么不用Java写,他说是数据维护, ...

  5. mysql练习-单表查询和多表查询

    单表查询 CREATE TABLE `worker` (`部门号` int(11) NOT NULL,`职工号` int(11) NOT NULL,`工作时间` date NOT NULL,`工资` ...

  6. inner join去除重复_SQL多表查询:join表联结

    在之前的学习和练习中,所有的操作都是在一张表中进行操作,实际工作中,我们期望得到的数据往往分散在不同的表中,今天我将带大家一起学会从多张表中获取数据. 一.表的加法 表的加法在SQL语句中用union ...

  7. SQL的老题目:查询学生平均成绩及其名次

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 24 ...

  8. 三门课成绩总分用c语言,编写一个C语言程序:输入三个学生三门课的成绩,计算每个学生的总分和平均成绩...

    C语言实现如下: #include void main(){float a[3][3],sum[3];int i;for(i=0;i 由热心网友提供的答案1: #include"stdio. ...

  9. 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

    题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个. Id Email 1 john@example.com 2 bob@example.c ...

最新文章

  1. 收集一些有关SilverLight(WPF/E)的链接
  2. 【WIN10】程序內文件讀取與保存
  3. python优先级排序_Python实现优先级队列结构的方法详解
  4. 数据库事务的四大特性以及事务的隔离级别详解
  5. cad快速看图需要替换的4个vip文件_看不懂施工图怎么办?20年老师傅教你看图技巧,学会受用一生...
  6. 文本显示变量_几千个IO状态显示.十几分钟搞定实例
  7. 现代软件工程 第五章 【团队和流程】练习与讨论
  8. Java和JavaScript的主要区别之处在哪里?
  9. windows apache 负载均衡配置 Tomcat集群配置
  10. 和nptf螺纹一样吗_常用数控加工计算公式和最全螺纹标准
  11. COCOS2D坐标系统的一些说明
  12. Navicat 注册机破解问题
  13. 2021年中国学前教育行业发展现状及未来发展趋势分析:毛入学率达88.1%[图]
  14. 【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么
  15. 分布式与云化的主要区别
  16. 河北省2018计算机一级考试试题,2018年3月计算机一级考试MSOffice模拟试题1
  17. Win7 IIS部署网站局域网内用户无法访问网站解决方案
  18. java架构师视频,附源代码
  19. Java - 反射机制
  20. Mathcad的数组使用

热门文章

  1. 用java实现matlab的随机函数randsrc(m,n,[alphabet; prob])
  2. SQL Server DATEADD() 函数和DATEDIFF() 函数
  3. python随机森林特征重要性原理_使用Python的随机森林特征重要性图表
  4. 学会了使用计算机之后作文,我学会了计算机
  5. iOS第三方插件——Masonry详解
  6. 通过jstack分析cpu问题
  7. DirectX11 Direct3D基本概念
  8. 深度学习入门笔记(八):深层网络的原理
  9. JAVA微信公众号开发之自动回复消息与图片
  10. 听鬼哥说故事之U3D游戏破解分析