[英]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.