我可以按照ntile函数的等级或密集等级进行排序吗?

时间:2015-06-10 15:09:09

标签: sql oracle rank dense-rank

我正在寻找一些帮助,以确定我是否可以在一个ntile查询中使用rank / dense rank函数。

我有以下代码:

NTILE(5) OVER (PARTITION BY JOB_TYPE ORDER BY SCORE DESC) AS M_NTILE
,DENSE_RANK() OVER (PARTITION BY MONTH_ENDING, JOB_TYPE ORDER BY M_NTILE DESC) AS RANK

但是我想要做什么,而不是按照ntile中的得分顺序,我希望通过排名查询中的结果来排序。

这可能吗?如果有人可以请指教会非常感激。

1 个答案:

答案 0 :(得分:1)

您需要使用子查询:

select t.*,
       DENSE_RANK() OVER (PARTITION BY MONTH_ENDING, JOB_TYPE
                          ORDER BY M_NTILE DESC) AS RANK
from (select . . .,
             NTILE(5) OVER (PARTITION BY JOB_TYPE ORDER BY SCORE DESC) AS M_NTILE
      . . .
      ) t 

然而,这似乎并不是必要的。为什么不使用score

select t.*,
       DENSE_RANK() OVER (PARTITION BY MONTH_ENDING, JOB_TYPE
                          ORDER BY SCORE DESC) AS RANK