如何在SQL Server的over()子句中使用top n

时间:2017-06-01 10:53:25

标签: sql-server

以下文章(https://docs.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql)声称:

  

可以使用over子句找出“每组前N个”结果。

请举个例子。

您诚挚的

2 个答案:

答案 0 :(得分:2)

一种方法是:

select t.*
from (select t.*,
             row_number() over (partition by grp order by col) as seqnum
      from t
     ) t
where seqnum <= @n;

答案 1 :(得分:0)

这是一项简单的任务

MAX(column) OVER(PARTITION BY column) AS mx

您将获得每个列值的最大值,即TOP N

将MAX替换为其他聚合函数以获得另一种洞察力,如MIN,AVG等。