我正在寻找一些帮助,以确定我是否可以在一个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中的得分顺序,我希望通过排名查询中的结果来排序。
这可能吗?如果有人可以请指教会非常感激。
答案 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