Sqlserver 中 如何筛选出 分组后成绩最大列的这一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sqlserver 中 如何筛选出 分组后成绩最大列的这一列相关的知识,希望对你有一定的参考价值。

比如 一张表 Score 表 字段 id, stu_score ,stu_name, stu_course 数据:
1 , 80 , 小王, 物理
2, 80, 小王, 化学
3, 70 ,小王,生物
4, 90,小李,物理
5, 80,小李,化学
6, 90,小李,生物
7, 90,小孙,物理
8, 80,小孙,化学
9, 70,小孙,生物
我只想根据姓名Group by 之後 得到某个人 成绩最大的一条记录 , 也就是说 比如小王取第一条记录可以,取第二条记录 也可以 但是只需要一条,比如小李 取 第4条或者第6条 ,而 小孙取 第7 条记录即可
请问这个Sql 怎麼写?

参考技术A SELECT stu_name, MAX(stu_score) stu_score FROM Score Group by stu_name追问

不对,这麼简单的话,我还需要提问么? 我需要知道最大成绩这一列的ID

追答

额,就这么简单,你不能再套一层么?
SELECT DISTINCT * FROM Score a
INNER JOIN
(
SELECT stu_name, MAX(stu_score) stu_score FROM Score Group by stu_name
)t ON t.stu_name = a.stu_name AND a.stu_score = b.stu_score

本回答被提问者采纳
参考技术B max()方法?追答

话说你这个应该是行列转换的问题吧,网上去搜一下吧。

追问

不对,max() 方法我还需要提问么?我需要的是 根据 stu_name group by 之後 ,成绩最大的这一列的id

oracle mysql sqlserver数据库中的分页

oracle:

select * from (select rownum r,t1.* from tablename t1 where rownum <M+N ) t2 where t2.r>M;

说明:从tablename表里筛选出从M条记录开始,筛选N条记录。

 

mysql:

select * from tablename limit n,m;

说明:从tablename表筛选出,从第n条记录开始,筛选出m条记录。

备注:记录位置从0开始。

 

sqlserver:

select top n * from tablename;

说明:从tablename表中筛选出前n条记录。

以上是关于Sqlserver 中 如何筛选出 分组后成绩最大列的这一列的主要内容,如果未能解决你的问题,请参考以下文章

SQL重复数据的筛选

oracle mysql sqlserver数据库中的分页

代码中输入数字自动筛选出最大值,使用array,for loop and if (21.9.2017)

EXCEL表一列数据中只筛选出“整数”或是“小数”怎么办????

Excel—分组然后取每组中对应时间列值最大的或者最小的

tableau如何计算筛选出的数据差