我有一列日期,我想找到我尝试过以下每年的三个最长日期。
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
表中也有重复日期,所以我也必须过滤掉那些
答案 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