sql - 基于多列从每个组中获取具有最大值的行
问题描述
假设我有下表 STUDENTMARKS:
桌子
其中 Name+Age+ID 一起代表一个人。我想得到每个学生在最短的时间内获得最高分的行。首先我们将优先考虑分数,如果任何学生的分数相同,那么我们将采取最短的时间,我们可以说时间将是唯一的。基本上我想要以下输出:
输出
我尝试了以下 sql 但它不起作用:
SELECT TOP 1 * FROM STUDENTMARKS GROUP BY Name, Age, ID ORDER BY Score DESC, Time ASC
有什么建议吗?
解决方案
您可以使用row_number()
select * from
(
select *,row_number() over(partition by name, age, id order by score desc, time asc) as rn
from STUDENTMARKS
)A where rn=1
推荐阅读
- linux - 在 Rust 中创建带有标签的新分区
- java - 如何在硒的单个工作簿中创建多个工作表..并为每个工作表提取数据
- c# - 使用 ElementName 将 XAML 元素绑定到 UserControl
- java - 如何在使用 REST API 生成数据时传输数据?
- java - 调试 `Widget is disposed` 异常
- reactjs - 使用 Dropzone 扩展文件类型的图像预览
- php - Laravel @can 刀片策略检查
- c++ - 将字符串转换为矩阵数组
- css - 当博客标题长度不同时如何使用 flexbox 让元素对齐
- javascript - 在Angular 4中取消选中复选框时如何从JSON数组中删除对象?