我有一个“每日使用情况”表,如下所示:
ID, Date, Usage
1, 2018-07-25, 30
1, 2018-07-23, 30
1, 2018-07-22, 30
1, 2018-07-21, 30
1, 2018-07-20, 30
2, 2018-07-29, 30
2, 2018-07-28, 30
2, 2018-07-27, 30
2, 2018-07-26, 30
如何获取ID的最近3天记录,每个ID的最后一天都不相同,最好在Netezza SQL中,即
ID, Date, Usage
1, 2018-07-25, 30
1, 2018-07-23, 30
2, 2018-07-29, 30
2, 2018-07-28, 30
2, 2018-07-27, 30
请注意,对于ID = 1,只能获取07-25(第3天)和07-23(第1天),但不能获取07-22,因为我希望从上一天起3天之内的任何可用日期
我认为rank()或row_number()可能不适合这份工作
答案 0 :(得分:3)
使用row_number()
:
select t.*
from (select t.*, row_number() over (partition by id order by date desc) as seqnum
from t
) t
where seqnum <= 3;
编辑:
如果您希望最多2天,请使用:
select t.*
from (select t.*, max(date) over (partition by id) as max_date
from t
) t
where date >= duration_subtract(max_date, -2);