要按组获取Top-N的解决方法在MSSQL中,可以使用ROW_NUMBER()函数来实现。下面是一个示例代码:
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY sort_column DESC) AS row_num
FROM your_table
)
SELECT *
FROM CTE
WHERE row_num <= N;
在上面的代码中,your_table 是你要查询的表,group_column 是你要分组的列,sort_column 是你要排序的列,N 是你要获取的Top-N的数量。
通过使用 ROW_NUMBER() 函数,我们为每个分组计算一个行号,根据 sort_column 的降序排序。然后,我们从 CTE(公共表表达式)中选择行号小于等于 N 的记录,即获取了每个分组的前 N 条记录。
你可以根据你的具体需求修改和调整上面的代码,以适应你的数据表结构和查询条件。
上一篇:按组获取前n个值不如预期
下一篇:按组获取相关列值