Не корректно отрабатывает условие по сравнению предыдущего и настоящего значений а именно lag_amt_3 > lag_amt_2

Рейтинг: 0Ответов: 0Опубликовано: 22.02.2023
CREATE TABLE if not exists STG_TRANSACTIONS_TYPE as
            SELECT
                trans_date,
                oper_type,
                oper_result,
                amt,
                card_num,
                lag(trans_date, 3) over (partition by card_num order by trans_date) as lag_time,
                lag(oper_result) over (partition by card_num order by trans_date) as lag_result_1,
                lag(oper_result, 2) over (partition by card_num order by trans_date) as lag_result_2,
                lag(oper_result, 3) over (partition by card_num order by trans_date) as lag_result_3,
                lag(amt) over (partition by card_num order by trans_date) as lag_amt_1,
                lag(amt, 2) over (partition by card_num order by trans_date) as lag_amt_2,
                lag(amt, 3) over (partition by card_num order by trans_date) as lag_amt_3
            FROM DWH_FACT_TRANSACTIONS
            WHERE oper_type = 'WITHDRAW'
            OR oper_type = 'PAYMENT';

        CREATE TABLE if not exists STG_TRANSACTIONS_LAG as
            SELECT
                trans_date,
                oper_type,
                oper_result,
                amt,
                card_num,
                lag_time,
                lag_result_1,
                lag_result_2,
                lag_result_3,
                lag_amt_1,
                lag_amt_2,
                lag_amt_3,
                ((JULIANDAY(trans_date) - JULIANDAY(lag_time)) * 24 * 60) as delta_time
            FROM STG_TRANSACTIONS_TYPE
            WHERE oper_result = 'SUCCESS'
            AND lag_result_1 = 'REJECT'
            AND lag_result_2 = 'REJECT'
            AND lag_result_3 = 'REJECT'
            AND lag_amt_3 > lag_amt_2
            AND lag_amt_2 > lag_amt_1
            AND lag_amt_1 > amt
            AND ((JULIANDAY(trans_date) - JULIANDAY(lag_time)) * 24 * 60) < 20;

Имеется вот такой код по созданию таблицы через выборку, при выполнении всех условий по выборке выдается одна запись, хотя по данным из таблицы есть еще одна которая подходит под все условия но не попадает в выборку. Но если убрать условие lag_amt_3 > lag_amt_2 то получается две записи попадающие под условие выборки. На скриншоте сначала выполнен запрос со всеми условиями, далее запрос без условия lag_amt_3 > lag_amt_2. Подскажите добрые люди в чем может быть проблема?скрин выполнения запроса

Ответы

Ответов пока нет.