在oracle中对列进行排序

西瓦

我有以下数据,当我通过对id列进行排序来应用density_rank时,我正在根据整数的顺序获得排名,但是我需要进行排名,因为运行查询时将显示记录:

查询数据:

Rid   id

8100  161
8101   2
8102   2
8103   2
8104  156

当我通过id对命令应用density_rank时,我得到

Rid   id    rank

8100  161    3
8101   2     1
8102   2     1
8103   2     1
8104  156    2

但是我的要求是采取以下方式:

Rid   id    rank

8100  161    1
8101   2     2
8102   2     2
8103   2     2
8104  156    3

也使用了row_number,但结果与预期不符,不确定哪种选择是更好的方法。

任何帮助表示赞赏。

谢谢

编辑 - - - - - - - - - - - - - - -

查询使用

Select rid, id,dense_rank() over (order by id) row_num
from table
博卡

我已根据您的特定要求从此处调整了解决方案:DENSE_RANK

我不确定是否应该将其标记为重复项,因为在此链接上方,没有ORACLE标记。如果更多有经验的成员认为我应该发表评论,那么我会发表评论并删除此答案。

这是调整后的代码和演示:

SELECT t2.rid
       , t2.id
       , DENSE_RANK() OVER (ORDER BY t2.max_rid)
FROM (
  SELECT MAX(t1.rid) OVER (PARTITION BY t1.grupa) AS max_rid
         , t1.rid
         , t1.id
  FROM (       
    SELECT rid
           , id
           ,ROW_NUMBER() OVER (ORDER BY rid) - ROW_NUMBER() OVER (PARTITION BY id ORDER BY rid) AS grupa
    FROM test_table) t1 )  t2
ORDER BY rid

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章