[SQL]求每位学生最高成绩的科目名称的一种SQL写法

一、问题:求每位学生最高成绩的科目名称。

表结构与数据如下图所示:

期望的结果为:

二、解决方法:

1、第一眼看上去这个问题挺简单的,只接写:

select StuName,max(StuScore)as StuScore,StuSubject from example group by StuName;

感觉上是对的,那么验证下看看结果:



 和期望的结果不一样,StuSubject列的信息和所提供的数据不符(为什么不符,后篇继续思考)。
2、正确的写法应该是:
select a.StuName,a.StuScore,a.StuSubject from example as a,(select StuName,max(StuScore) as MaxStuScore from example group by StuName) as b where a.StuName = b.StuName and a.StuScore = b.MaxStuScore


三、感想:

遇到问题不能想当然,需要认真思考和实践,才能真正解决问题。

时间有限,先写到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值