Oracle按最近日期排名以检索相对周数

时间:2014-08-14 16:41:32

标签: sql oracle

我有一张包含这些数据的表格;

ID      Date_Weekly_List
1       12/08/2014
2       12/08/2014
3       12/08/2014
4       07/08/2014
5       07/08/2014
6       06/08/2014

并且希望收到一个结果集,该结果集按周列表排序行,最近的日期是第一个;

ID      Date_Weekly_List    Rank
1       12/08/2014          1
2       12/08/2014          1
3       12/08/2014          1
4       07/08/2014          2
5       07/08/2014          2
6       06/08/2014          3

我试过使用Rank函数分区并按date_weekly_list排序但是这总是返回1作为排名,我哪里出错了?

select id, date_weekly_list, rank() over (partition by date_weekly_list order by date_weekly_list     desc)
from my_table

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要删除分区子句:

select id, date_weekly_list, rank() over (order by date_weekly_list desc)
from my_table

否则,您将对每个日期的日期进行排名,并且如您所发现的,所有日期都将排名为1.如果您想要消除差距,请使用:

select id, date_weekly_list, dense_rank() over (order by date_weekly_list desc)
from my_table