Итак, есть номер счета и мы ежедневно получаем информацию об их платежах. Предположим, у нас есть информация за 1 год до сегодняшнего дня, то есть 08 марта / 2019, я бы хотел подсчитать, сколько раз он / она переплатил за последнюю 1 неделю. Я использовал оконную функцию mysql, но по какой-то причине она не работает
@ GMB. Пример данных будет выглядеть следующим образом: предположим, что для этого аккаунта у нас есть информация с последнего марта 2018 года. Я просто хочу узнать, сколько раз paid_status = переплачено с последней даты, которая у меня есть в моем файле на сегодняшний день - 08 / март / 2019 и предыдущие 7 дней, 14 дней, 1 месяц или любой срок по моему выбору. Ваш запрос будет жестко закодирован только на 7 дней.
ACCOUNT_ID paid_status amt dte
-----------------------
1234 overpaid 100 01/March/2018
.
.
.
1234 overpaid 120 01/March/2019
1234 not paid 0 02/March/2019
1234 overpaid 110 03/March/2019
1234 overpaid 120 04/March/2019
1234 overpaid 130 05/March/2019
1234 overpaid 120 06/March/2019
1234 overpaid 120 07/March/2019
1234 overpaid 121 08/March/2019
Запрос:
,COUNT(CASE WHEN paid_status = 'OVERPAID' THEN 1 END)
over (PARTITION BY ACCOUNT_ID
ORDER BY DTE ROWS BETWEEN 7 PRECEDING AND UNBOUNDED FOLLOWING
) AS num_times_overpaid_week1
Вывод должен быть таким (не включая сегодняшнюю информацию):
account_id num_times_overpaid_week1
1234 6
В то время как я получаю несколько строк для одного и того же account_id, и это не совсем правильно вычисляет поле