Суммирование последовательности сумм, итеративно сгруппированных по идентификатору и по дате в Presto - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь выполнить запрос в Amazon Athena, где я суммирую последовательность транзакций для каждого идентификатора и до определенной даты.Указанная дата дает баланс на тот момент времени.Для каждого идентификатора мне нужно включить самую первую транзакцию, чтобы получить правильный баланс.Данные структурированы как

ID   |  Amount  | Created
________________________

378218  -450.00 2018-09-27
378218  4500.00 2018-09-27
260709  899.00  2018-09-27
70791   -719.96 2018-09-27
70791   -65.00  2018-09-19
70791   -3.16   2018-09-07
70791   3.16    2018-09-07
70791   61.84   2018-09-01
70791   -61.84  2018-09-01
70791   -65.00  2018-08-16
70791   -61.84  2018-08-01

Достаточно просто получить баланс всех идентификаторов за одну конкретную дату:

SELECT SUM(amount), ID, created 
FROM db.table where created<'2018-10-01'
GROUP BY ID

Это дает следующий результат:

 ID   |  Amount  | Created
 ________________________

70791   344.10  2015-09-27
260709  899.00  2018-09-27
378218  0.00    2018-09-27

Приведенный выше запрос дает мне сальдо за 30 сентября.Тем не менее, как это достигается для нескольких точек за раз в одном запросе, например, за последний день месяца за последние 12 месяцев?Я знаю, что вы можете использовать временные таблицы и т. Д., Но я не очень знаком с этим.

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

1 Ответ

0 голосов
/ 27 сентября 2018

вам нужно будет создать оконную функцию, как показано ниже.

SELECT id, created,sum(amount) over (partition by id order by created)         
balance_at_date  
FROM "db"."table" 
order by id, created;

У меня были данные, подобные ниже

ID,AMOUNT,CREATED
123,100,2018-09-01
123,200,2018-09-15
123,-50,2018-09-18
345,100,2017-01-01
345,50,2018-01-01
345,-200,2018-09-01

, и запрос возвращает вывод, как показано ниже:

id  created balance_at_date
123 2018-09-01  100
123 2018-09-15  300
123 2018-09-18  250
345 2017-01-01  100
345 2018-01-01  150
345 2018-09-01  -50

Надеюсь, это поможет.

...