MS access - 递增地对等值进行排名
MS access - ranking equal values incrementally
是否可以在 Access 中对重复值赋予增量排名的记录进行排名(如 SQL 服务器中的 row_number 函数)?
我想对以下记录集进行排名:
ID Type Score
1 Team1 4
1 Team2 2
1 Team3 1
1 Team4 1
我目前的查询:
select *
from tbl as tbl1
where tbl1.ID in
( select top 3 Type
from tbl as tbl2
where tbl2.ID = tbl1.ID
order by tbl2.Score )
排名如下
ID Type Score Rank
1 Team1 4 1
1 Team2 2 2
1 Team3 1 3
1 Teams 1 3
我需要这样对它们进行排名:
ID Type Score Rank
1 Team1 4 1
1 Team2 2 2
1 Team3 1 3
1 Team4 1 4
这可以在 Access 中完成吗?
编辑:
排名也需要分组
更大的数据样本和我想在派生列中表示的内容,一些 ID 的记录比其他 ID 多:
ID Type Score Rank
1 Team1 4 1
1 Team2 2 2
1 Team3 1 3
1 Team4 1 4
2 Team1 2 1
2 Team3 2 2
2 Team2 1 3
4 Team1 4 1
4 Team3 4 2
4 Team5 3 3
4 Team4 1 4
4 Team2 1 5
最终我想 select 每个 ID 的前 3 行
在两个条件聚合计数子查询上使用差分方程考虑此解决方案。 Tiebreaker 使用拼音顺序 Type
:
SELECT tbl.ID, tbl.Type, tbl.Score,
(SELECT Count(*) FROM tbl sub WHERE sub.ID = tbl.ID
AND sub.Score >= tbl.Score )
-
(SELECT Count(*) - 1 FROM tbl sub WHERE sub.ID = tbl.ID
AND sub.Type >= tbl.Type
AND sub.Score = tbl.Score) As [Rank]
FROM tbl
ORDER BY ID, Score DESC, Type;
是否可以在 Access 中对重复值赋予增量排名的记录进行排名(如 SQL 服务器中的 row_number 函数)?
我想对以下记录集进行排名:
ID Type Score
1 Team1 4
1 Team2 2
1 Team3 1
1 Team4 1
我目前的查询:
select *
from tbl as tbl1
where tbl1.ID in
( select top 3 Type
from tbl as tbl2
where tbl2.ID = tbl1.ID
order by tbl2.Score )
排名如下
ID Type Score Rank
1 Team1 4 1
1 Team2 2 2
1 Team3 1 3
1 Teams 1 3
我需要这样对它们进行排名:
ID Type Score Rank
1 Team1 4 1
1 Team2 2 2
1 Team3 1 3
1 Team4 1 4
这可以在 Access 中完成吗?
编辑: 排名也需要分组
更大的数据样本和我想在派生列中表示的内容,一些 ID 的记录比其他 ID 多:
ID Type Score Rank
1 Team1 4 1
1 Team2 2 2
1 Team3 1 3
1 Team4 1 4
2 Team1 2 1
2 Team3 2 2
2 Team2 1 3
4 Team1 4 1
4 Team3 4 2
4 Team5 3 3
4 Team4 1 4
4 Team2 1 5
最终我想 select 每个 ID 的前 3 行
在两个条件聚合计数子查询上使用差分方程考虑此解决方案。 Tiebreaker 使用拼音顺序 Type
:
SELECT tbl.ID, tbl.Type, tbl.Score,
(SELECT Count(*) FROM tbl sub WHERE sub.ID = tbl.ID
AND sub.Score >= tbl.Score )
-
(SELECT Count(*) - 1 FROM tbl sub WHERE sub.ID = tbl.ID
AND sub.Type >= tbl.Type
AND sub.Score = tbl.Score) As [Rank]
FROM tbl
ORDER BY ID, Score DESC, Type;