繁体   English   中英

Microsoft SQL Server选择前N个组

[英]Microsoft SQL server to select Top N group

关于如何从每个组中选择n行有很多答案。 但是我要寻找的是从前N个组中选择每一行,例如,我有以下数据:

 id   group
  1     a
  2     a
  3     b
  4     c
  5     c
  6     d
  7     d
  .......

如果要选择前三名,我的预期结果如下:

   1    a
   2    a
   3    b
   4    c
   5    c

如何使用Microsoft SQL Server 2008做到这一点?

一种选择是使用子查询来选择前N个组:

SELECT t1.id, t1.group
FROM yourTable t1
INNER JOIN
(
    SELECT DISTINCT TOP(N) group
    FROM yourTable
    ORDER BY group
) t2
    ON t1.group = t2.group

您可以按组对行进行rank ,然后仅采用前三名:

SELECT [id], [group]
FROM   (SELECT [id], [group], RANK() OVER (ORDER BY [group] ASC) rk
        FROM   mytable) t
WHERE  rk <= 3

@Tim:我刚刚修改了您的查询。

SELECT t1.id, t1.group
FROM yourTable t1
INNER JOIN
(
    SELECT TOP N group
    FROM yourTable
    GROUP BY group
    --ORDER BY group USE IT IF YOU WANT
) t2
    ON t1.group = t2.group

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM