我如何能够在一个 oracle 查询中为几个组提供 N 个结果。
有关示例,请参见下表:
ID Team Auditor
1 Tm1 Jill
2 Tm2 Jill
3 Tm1 Jill
4 Tm2 Jack
5 Tm2 Jack
6 Tm2 Jack
7 Tm3 Sam
8 Tm1 Sam
9 Tm5 Sam
有更多的行有更多的审计员和团队。我想为每个审核员安排 3 个团队,尽可能由 3 个不同的团队组成。
我已经在使用以下 SQL(针对此查询Get top results for each group (in Oracle)发布)为每个审计员返回 3 个团队,但有时他们会得到 3 个相同的团队,这并不理想(请参阅杰克)。
select *
from (select ID,
Team,
Auditor,
rank() over ( partition by Auditor order by ID) rank
from table)
where rank <= 3;