在我的Presto(Athena)数据库中,我有客户ID,余额和日期的数据。余额列显示给定日期客户余额的变化。余额可以上升和下降。数据的结构如下:
ID | Balance| Created
________________________
260709 399.00 2018-10-02
70791 358.44 2018-08-01
70791 344.10 2018-06-01
260709 936.46 2018-08-01
260709 899.00 2018-07-01
70791 347.26 2018-05-28
70791 344.10 2018-05-28
70791 344.10 2018-05-27
260709 899.00 2018-05-27
378218 4500.00 2018-09-27
378218 0.00 2018-07-27
378218 -450.00 2017-12-27
378218 0.00 2017-12-26
如果我想要ID的余额,例如10月1日,我可以使用查询:
SELECT *
FROM
(SELECT id,
created,
balance,
row_number()
OVER (partition by id
ORDER BY Created) rn
FROM db.table where created<='2018-10-01'
ORDER BY id, created) d
WHERE d.rn=1
如果我想要过去12或24个月中的所有余额(给定月份的余额定义为该特定月份的最后一个余额条目),该怎么办?这个想法是为了能够看到谁每月都有一个正余额。
因此,即使债务人在给定的月份中没有条目,查询也应该只返回最近的余额,即ID=70791
:
ID | Balance| Created
________________________
70791 358.44 2018-08-01
70791 344.10 2018-07-01
70791 344.10 2018-06-01
70791 347.26 2018-05-28
在上述情况下,2018-07-01
的条目在该特定ID的数据集中不可用,因此我仅重复使用该日期的最新余额。我希望我的案子有意义。
谢谢。