有一个scores表,表结构和数据如下:

id, stu_id, name,course, grade

1,1,贾万, 语文, 90
2,1,贾万 ,数学 ,100 
3,2,毛之远 ,语文 ,97
4,2,毛之远,数学 ,100 
5,2 ,毛之远,物理(选修),90

通过SQL改写成这样:

学号,姓名,课程,综合平均成绩

1,贾万 | 语文,数学| 95
2,毛之远 |语文,数学,英语 |95.67

先建表和插入数据:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for scores
-- ----------------------------
DROP TABLE IF EXISTS `scores`;
CREATE TABLE `scores` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`stu_id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`course` varchar(20) DEFAULT NULL,
`grade` decimal(10,0) DEFAULT NULL,
PRIMARY KEY (`id`,`stu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4; -- ----------------------------
-- Records of scores
-- ----------------------------
INSERT INTO `scores` VALUES ('1', '1', '贾万', '语文', '90');
INSERT INTO `scores` VALUES ('2', '1', '贾万', '数学', '100');
INSERT INTO `scores` VALUES ('3', '2', '毛之远', '语文', '97');
INSERT INTO `scores` VALUES ('4', '2', '毛之远', '数学', '100');
INSERT INTO `scores` VALUES ('5', '2', '毛之远', '物理(选修)', '90');

分析:先把平均成绩求出来

select stu_id,name, avg(grade) as "综合成绩" from scores group by name;

然后插入想要的列:

select stu_id,name,"课程", avg(grade) as "综合成绩" from scores group by name;

然后思考怎么把 "课程" 这一个条件的结果改变成语文,数据,物理的整合结果。

我们根据课程去查询时,发现会返回多行课程结果,所以问题可以转变为多行合并为一行。

百度“mysql 多行合并”,发现了这个链接:http://www.cnblogs.com/guaiguaipaizz/p/6501676.html

其中提到了  GROUP_CONCAT 的用法 和 SEPARATOR 的用法,源码样例原封不动的拷贝过来(如果侵权了,我随时可以撤回,不过大家都是用于学习,不是商业用途,还请网开一面。)

SELECT am.activeId,GROUP_CONCAT(m.modelName SEPARATOR ',') modelName
FROM activemodel am
JOIN model m
ON am.modelId=m.modelId
WHERE m.valid=1
GROUP BY am.activeId

然后改写我们的案例SQL:

select stu_id,name,GROUP_CONCAT(course SEPARATOR ',') as "课程", avg(grade) as "综合成绩" from scores group by name;

最新文章

  1. swift跳转到Appstore
  2. 生JS实现jQuery的ready方法呢?下面是其中之一的做法:
  3. 【转】armeabi和armeabi-v7a
  4. Encryption
  5. Struts2中的链接标签 <s:url>和<s:a>---在action中获取jsp表单提交的参数(转)
  6. python 3.6 import pymysql错误
  7. 应用AXIS开始Web服务之旅(soap web services)——使用三种不同的语言访问创建的Web服务,分别是JAVA、VB、VC
  8. Java String 类的 equals 和 ==
  9. 【转】NoClassDefFoundError和ClassNotFoundException
  10. newlisp
  11. 自定义一个仿Spinner
  12. Gui图形化界面
  13. C/C++/Objective-C经典书籍推荐
  14. 基于GIT的管理
  15. DAY4-Flask项目
  16. Python_安装官方whl包和tar.gz包
  17. UITableView编辑模式
  18. 免费观看vip/要劵的电影
  19. Git学习-Git时光机之版本回退(二)
  20. Jms学习篇一:JMS介绍

热门文章

  1. docker中安装db2
  2. git prior sync failed; rebase still in progress
  3. toast简介
  4. react 本地 DevServer启动之后找不到静态资源404
  5. Java-根据父级id将List结构转Tree结构
  6. Python的入门学习Day 10~13——form”夜曲编程“
  7. 24_webpack_打包分析
  8. BundleFusion_Ubuntu_Pangolin 安装的一些error
  9. 向mysql插入数据是出现Incorrect string value错误
  10. 微信小程序顶部透明