Advertisement
Guest User

Fraud Detection SQL

a guest
Jan 24th, 2024
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.15 KB | Cybersecurity | 0 0
  1. WITH RecentSummarizedTransactions AS (
  2.   SELECT
  3.     transaction_id,
  4.     user_id,
  5.     COUNT(*) as transactions_quantity,
  6.     SUM(amount) as transactions_sum,
  7.     AVG(amount) as transaction_average,
  8.     COUNT(DISTINCT merchant_id) as unique_merchants
  9.   FROM
  10.     transactions
  11.   WHERE
  12.     transaction_date >= NOW() - INTERVAL 1 MONTH
  13.   GROUP BY
  14.     user_id
  15. )
  16.  
  17. WITH AllTimeSummarizedTransactions AS (
  18.   SELECT
  19.     transaction_id,
  20.     user_id,
  21.     COUNT(*) as transactions_quantity,
  22.     SUM (amount) as transactions_sum,
  23.     AVG(amount) as transaction_average,
  24.     COUNT(DISTINCT merchant_id) as unique_merchants,
  25.     COUNT(*) / ABS(DATEDIFF(month, NOW() - INTERVAL 1 MONTH, MIN(transaction_date))) AS avg_transactions_per_month
  26.   FROM
  27.     transactions
  28.   GROUP BY
  29.     user_id
  30. )
  31.  
  32. SELECT
  33.     rst.transaction_id,
  34.     rst.user_id,
  35.     rst.transactions_quantity,
  36.     rst.transactions_sum,
  37.     rst.unique_merchants
  38. FROM
  39.     RecentSummarizedTransactions rst
  40. JOIN
  41.     AllTimeSummarizedTransactions ast
  42. ON
  43.     ast.transaction_id=rst.transaction_id
  44. WHERE
  45.     rst.transaction_average >= 3 * ast.transaction_average
  46. OR
  47.     rst.transactions_quantity > 3 * ast.avg_transactions_per_month
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement