sql选择前n个值-按多个列的值排序和限制
我想了解为多列输出一定数量的顶级值(比如2)的逻辑。 这张桌子看起来有点像这样:有不同的班级、科目和学生。我想知道如何看待mars在每门学科和每堂课上得分最高的两名学生 表格示例: 等等 输出应该是什么样子的:sql选择前n个值-按多个列的值排序和限制,sql,postgresql,greatest-n-per-group,Sql,Postgresql,Greatest N Per Group,我想了解为多列输出一定数量的顶级值(比如2)的逻辑。 这张桌子看起来有点像这样:有不同的班级、科目和学生。我想知道如何看待mars在每门学科和每堂课上得分最高的两名学生 表格示例: 等等 输出应该是什么样子的: 这可以通过以下方式轻松完成: 如果有一个以上的学生成绩相同,所有这些学生都会被列出。因此,这可以让两名以上的顶尖学生返回 如果你不想这样,用行数替换密集排列如果你只是键入数据而不是链接图片,对其他人来说会容易得多。您的第一个链接已断开,因此没有人能够为您回答此问题。非常感谢!我以前从未使
这可以通过以下方式轻松完成: 如果有一个以上的学生成绩相同,所有这些学生都会被列出。因此,这可以让两名以上的顶尖学生返回
如果你不想这样,用行数替换密集排列如果你只是键入数据而不是链接图片,对其他人来说会容易得多。您的第一个链接已断开,因此没有人能够为您回答此问题。非常感谢!我以前从未使用过窗口函数。我将尝试阅读更多关于它的信息。
select class, subject, student_id, marks_scored
from (
select class, subject, student_id, marks_scored,
dense_rank() over (partition by subject, class order by marks_scored desc) as rnk
from the_table
) t
where rnk <= 2
order by class, subject, marks_scored desc;