如何在Oracle中使用count(*)over(order by ....)获得连续排名

时间:2016-02-01 22:04:33

标签: oracle count sql-order-by

我有桌子

Item
------   
apple
apple
bean
bean
cherry
cherry
cherry

我想创建另一个表,其中包含以下项目的排名

Item    ranking
----------------   
apple      1
apple      1
bean       2
bean       2
cherry     3 
cherry     3
cherry     3

我使用该语句并可以生成这样的排名

从表a

中选择项目,计数(*)(按项目排序)
Item    ranking
----------------   
apple      1
apple      1
bean       3
bean       3
cherry     5 
cherry     5
cherry     5

有没有快速的方法来创建所需的连续排名?

非常感谢!

1 个答案:

答案 0 :(得分:2)

尝试 DENSE_RANK 功能:

select item, dense_rank() over (order by item) from table a