我有下表:
NAME | SCORE ALICE | 100 BOB | 90 CHARLES| 90 DUKE | 80 EVE | 70 ...
我的问题如下:
如何用一个查询提取三个最佳玩家的名字?在我的例子中,查询应该返回4行(ALICE,BOB,查尔斯和DUKE),因为有两个银牌得主(它们都具有90点).
先感谢您.
Oracle具有DENSE_RANK用于此目的的分析功能:
select name, score from (
select name, score, dense_rank() over(order by score desc nulls last) rank
-- ^^^^^^^^^^
-- reject NULL score at the end
from t
) V
where rank < 4
order by rank, name
Run Code Online (Sandbox Code Playgroud)
请参阅http://sqlfiddle.com/#!4/88445/5
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |