sql-server - 如何为每个组选择前 x 条记录

标签 sql-server select group-by having

我尝试过这样的事情

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

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

那么正确的语法是什么?

Id为主键聚集索引

最佳答案

这应该会让你非常接近

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 

关于sql-server - 如何为每个组选择前 x 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025255/

相关文章:

c - 等到文件描述符在没有忙循环的情况下不再可读

select - 通过 SELECT 语句用附加数据填充内表的附加列?这可以做到吗?

python - Pandas:解决交叉表问题

Mysql count group by 和 left join 未按预期工作

sql-server - 在 SQL Server 中为 Webhook 添加表触发器

c# - 恢复 SQL Server 数据库失败 SMO C#

MYSQL SELECT 跨多个表时速度很慢

MySql 组函数错误

mysql - 在 ASP.NET 中使用一个应用程序连接两个不同的数据库

sql-server - 如何通过SQL确认分支是否被合并?