2015-06-10 54 views
1

我一直在寻找一些帮助,以了解我是否可以在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

您将需要使用子查询:

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 
+0

嗨,感谢您的回复,将有一个尝试,看看我如何继续。 – user3191160