-- CCUPI_vpa_mid_hourly_limit DROP TABLE team_kingkong.offus_CCUPI_vpa_mid_hourly_limit_breaches; -- CREATE TABLE team_kingkong.offus_CCUPI_vpa_mid_hourly_limit_breaches AS INSERT INTO team_kingkong.offus_CCUPI_vpa_mid_hourly_limit_breaches with offus_txn as (SELECT DISTINCT transactionid, txn_amount, txn_date, paytmmerchantid, txn_timestamp, small_vpa , case when edc_mid is not null then 'EDC' else 'QR' end as mid_type FROM (SELECT pg_mid from cdo.total_offline_merchant_base_snapshot_v3) f INNER join (select transactionid , cast(eventamount as double)/100 as txn_amount , paytmmerchantid , DATE(dl_last_updated) AS txn_date , CAST(velocitytimestamp AS DOUBLE) AS txn_timestamp , small_vpa from cdp_risk_transform.maquette_flattened_offus_snapshot_v3 where dl_last_updated BETWEEN DATE(DATE'2025-05-01' - INTERVAL '1' DAY) AND DATE'2025-05-31' AND isupicc = 'true' AND actionrecommended <> 'BLOCK' AND responsestatus = 'SUCCESS') a on a.paytmmerchantid = f.pg_mid LEFT JOIN (SELECT mid AS edc_mid FROM paytmpgdb.entity_edc_info_snapshot_v3 WHERE terminal_status = 'ACTIVE' AND dl_last_updated >= DATE '2010-01-01') b ON a.paytmmerchantid = b.edc_mid) SELECT * FROM (SELECT A.transactionid, A.txn_amount, A.txn_date, A.paytmmerchantid, A.small_vpa, A.mid_type, 'CCUPI_vpa_mid_hourly_limit' AS rule_name, A.txn_timestamp , COUNT(B.transactionid) as txn1_hr , 3 as txn1_hr_threshold , SUM(B.txn_amount) as amt1_hr , 2000 as amt1_hr_threshold FROM (SELECT * FROM offus_txn WHERE txn_date BETWEEN date '2025-05-01' AND DATE'2025-05-31')A INNER JOIN (SELECT * FROM offus_txn)B ON A.small_vpa = B.small_vpa AND A.paytmmerchantid = B.paytmmerchantid AND (A.txn_timestamp - B.txn_timestamp) BETWEEN 0 AND 3600000 -- <= 1hour AND A.transactionid <> B.transactionid GROUP BY 1,2,3,4,5,6,7,8) WHERE (txn1_hr >= txn1_hr_threshold) AND ((amt1_hr + txn_amount) > amt1_hr_threshold) ;