Redshift列表每年最近的3个值

时间:2017-04-03 22:33:17

标签: sql amazon-redshift

我有一列日期,我想找到我尝试过以下每年的三个最长日期。

select max(date, rank() over (partition by SPLIT_PART(date, '-', 1) order by date desc)
from table
;

我想要的输出是

2013,2010-12-31
2013,2010-12-30
2013,2010-12-29

表中也有重复日期,所以我也必须过滤掉那些

1 个答案:

答案 0 :(得分:1)

假设没有重复的日期,您可以partition by年份的部分日期,并获得每年最新的3个日期。在最终查询中使用distinct(如果需要)删除重复项(如果有)。

select yr,date
from (select date_part(year,date) as yr,date
      ,dense_rank() over (partition by date_part(year,date) order by date desc) as rnk
     from table
     ) t
where rnk<=3