这是我关于stackoverflow的第一篇文章,所以请耐心等待。假设我有一个员工表,其中包含角色a,b,c,d等。我需要前5名员工的角色为A,前5名员工为角色B,前5名员工为角色C.请注意我需要在结果集中的表的所有列。任何帮助将不胜感激。
inactiveList.WrapLayoutLongPressHandle += (sender, e) =>
{
};
inactiveList.WrapLayoutTapHandle += (sender, e) =>
{
};
Name---Dept---Role
abc1---HR---A
abc2---HR---B
abc3---HR---C
abc4---HR---D
abc5---HR---A
abc6---HR---B
abc7---HR---C
abc8---DEV---D
abc9---DEV---A
abc10---DEV---B
abc11---DEV---C
abc12---DEV---D
abc13---DEV---A
abc14---DEV---B
abc15---DEV---C
abc16---Test---D
abc17---Test---A
abc18---Test---B
abc19---Test---C
abc20---Test---D
abc21---Test---A
abc22---Test---B
abc23---Test---C
abc24---Test---D
abc25---Test---A
abc26---Test---B
谢谢, SUD
答案 0 :(得分:1)
您希望对记录进行排名(每个角色的第一个/最佳五个)。这样做是通过RANK
,DENSE_RANK
和ROW_NUMBER
等分析函数完成的。
select name, dept, role
from
(
select name, dept, role, row_number() over (partition by role order by name) as rn
from employees
where role in ('A', 'B', 'C')
)
where rn <= 5
order by role, name;