1

我正在寻找一些帮助,以了解我是否可以在 ntile 查询中使用排名/密集排名函数。

我编写了以下代码:

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

但是我想要做的不是按分数排序,而是按排名查询中的结果排序。

这可能吗?如果有人可以请建议将非常感激。

4

1 回答 1

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
于 2015-06-10T15:15:22.810 回答