2015-06-10 55 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