【问题标题】:How to select top x records for every group如何为每个组选择前 x 条记录
【发布时间】:2012-12-11 02:33:28
【问题描述】:

我试过这样的

select Id,UserId from myTable group by Id,UserId having COUNT(UserId)<7

现在我要做的是为每个用户 ID 选择 6 条记录。但我的方法失败了。

那么正确的语法是什么?

id是主键聚集索引

【问题讨论】:

    标签: sql-server select group-by having


    【解决方案1】:

    这应该让你非常接近

    WITH    r ( userid, rnk )
          AS ( SELECT   userid, RANK() OVER ( PARTITION BY id ) AS rnk
               FROM     MyTable 
               GROUP BY userid)
    SELECT  r.*
    FROM    r
    WHERE   r.Rank <= 6 
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2019-01-17
      • 1970-01-01
      • 2020-02-04
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      相关资源
      最近更新 更多