sql server - 按组别排列前x行

问题描述:

我有一个问题,我浪费太多时间玩。它可以简化为这样的:sql server - 按组别排列前x行

  • 平台:SQL服务器
  • 你有与年龄,邮政编码
  • 名单表中的前5名最老的人在每个邮编

我可以看到如何用光标做到这一点,但是有没有一种方法可以实现这一目标?

所有输入都赞赏!

SELECT * 
FROM (
     SELECT * 
      ,ROW_NUMBER() OVER (PARTITION BY zipcode ORDER BY Age DESC) rn 
     FROM TableName 
    )A 
WHERE RN <= 5 

您需要使用ROW_NUMBER解析函数

SELECT * 
FROM 
(SELECT name, 
    age, 
    zipcode, 
    ROW_NUMBER() OVER   
    (PARTITION by zipcode 
     order by age desc) 
    as seq 
    ) T 
    Where T.seq <=5