-- DROP TABLE team_kingkong.onus_CCBP_attempt_Txn_user_1d_7d_30d_breaches; -- CREATE TABLE team_kingkong.onus_CCBP_attempt_Txn_user_1d_7d_30d_breaches AS INSERT INTO team_kingkong.onus_CCBP_attempt_Txn_user_1d_7d_30d_breaches with onus_txn_base as (SELECT A.*, case when m1.mid is not null then category else 'Others' end as business_category FROM ( select distinct userid, transactionid, cast(eventAmount as double) / 100 as amt, dateinserted, substr(cast(dateinserted as varchar(30)), 1, 7) as mnth, paymethod, paytmmerchantid, responsestatus, actionrecommended, velocitytimestamp FROM cdp_risk_transform.maquette_flattened_onus_snapshot_v3 WHERE DATE(dl_last_updated) BETWEEN DATE(DATE'2025-04-01' - INTERVAL '30' DAY) AND DATE'2025-04-30' AND SOURCE = 'PG' AND paytmmerchantid IN ('PTMCBP84799392178473','PTMVIS48435535949128','PTMCBP11428987150800') AND eventid IN (SELECT eventlinkid FROM risk_maquette_data_async.pplus_payment_result_prod_async_snapshot_v3 WHERE dl_last_updated BETWEEN DATE(DATE'2025-04-01' - INTERVAL '30' DAY) AND DATE'2025-04-30') ) a left join (select * from team_kingkong.voc_mid_categorization where mid != '') m1 on a.paytmmerchantid = m1.mid) SELECT * FROM (SELECT A.* -- No.of attempted txns per user per calendar day > 12 (consider only the CCBP transactions) , COUNT(IF(DATE(B.dateinserted) = DATE(A.dateinserted), B.transactionid, NULL)) AS txn_attempted_same_day , 12 AS txn_attempted_same_day_threshold -- No.of attempted txns last 7 days > 20 (consider only the CCBP transactions) , COUNT(IF(DATE(B.dateinserted) BETWEEN DATE(DATE(A.dateinserted) - INTERVAL '7' DAY) AND DATE(A.dateinserted), B.transactionid, NULL)) AS txn_attempted_7_day , 20 AS txn_attempted_7_day_threshold -- No.of attempted txns per calendar month > 30 (consider only the CCBP transactions) , COUNT(IF(DATE(B.dateinserted) BETWEEN date_trunc('month', DATE(A.dateinserted)) AND DATE(A.dateinserted), B.transactionid, NULL)) AS txn_attempted_cal_month , 30 AS txn_attempted_cal_month_threshold FROM (SELECT * FROM onus_txn_base WHERE DATE(dateinserted) BETWEEN DATE'2025-04-01' AND DATE'2025-04-30' AND responsestatus IN ('SUCCESS') AND actionrecommended = 'PASS')A INNER JOIN (SELECT * FROM onus_txn_base)B ON A.userid = B.userid AND A.transactionid <> B.transactionid AND B.velocitytimestamp < A.velocitytimestamp AND DATE(B.dateinserted) BETWEEN DATE(A.dateinserted - INTERVAL '30' DAY) AND DATE(A.dateinserted) GROUP BY 1,2,3,4,5,6,7,8,9,10,11) WHERE (txn_attempted_same_day >= txn_attempted_same_day_threshold) OR (txn_attempted_7_day >= txn_attempted_7_day_threshold) OR (txn_attempted_cal_month >= txn_attempted_cal_month_threshold) ;