Использовать запись предыдущих месяцев для текущих месяцев - PullRequest
0 голосов
/ 05 октября 2018

В моей базе данных Presto (Афина) у меня есть данные для идентификаторов клиентов, сальдо и дат.Столбец баланса показывает изменения в балансе клиентов на определенную дату.Балансы могут идти вверх и вниз.Данные структурированы следующим образом:

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

Если я хочу баланс для идентификатора, например, 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 недоступна в наборе данных для этого конкретного идентификатора, поэтому я просто повторно использую самый последний остаток на эту дату.Я надеюсь, что мой случай имеет смысл.

Заранее спасибо.

...