MySQL组内排序

MySQL实现分组内排序
选课表:学号,课程号,开课学期,成绩
需求说明:由于可能挂科,所以可能会出现同一学生在一门课程上出现多次成绩,要求显示该生同意科目的最高成绩。
建表:

create table course(
sno int,
cno int,
year int,
score int);

插入数据;
INSERT INTO course VALUES(1,1,2,56);
INSERT INTO course VALUES(1,1,2,65);
INSERT INTO course VALUES(2,3,2,58);
INSERT INTO course VALUES(2,3,2,77);
INSERT INTO course VALUES(3,2,2,88);
INSERT INTO course VALUES(4,2,2,77);

实现:查出最高成绩作为临时表,外连接得到最高成绩对应的记录内容。
SELECT course.* FROM (SELECT sno,cno,MAX(score) as newscore FROM course GROUP BY sno,cno) AS a 
			LEFT OUTER JOIN course 
			ON a.sno = course.sno and a.cno = course.cno and a.newscore=course.score;

在这里插入图片描述

MySQL实现组内排序(group_concat函数):
	group_concat函数说明:将分组内某一列的值连接到一起,在一行进行显示。
	SELECT sno,cno,GROUP_CONCAT(score ORDER BY score DESC) FROM course GROUP BY sno,cno;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值