Sql server 在银行交易记录中查找样本异常检测(在TSQL或R中)

Sql server 在银行交易记录中查找样本异常检测(在TSQL或R中),sql-server,r,Sql Server,R,我想在银行交易记录和总账条目中检测意外交易。 与供应商一样,每月的金额通常为2000美元或5000美元,但突然出现了10000美元或200美元的交易,这是出乎意料的。 我将有多个列参与此异常检测:客户、供应商、账号、交易描述、输入交易的用户(对于总账方)等 我的数据在SQL Server中,因此我正在寻找在TSQL中工作的示例代码。否则我可以依赖R脚本 谢谢你的帮助。可能不是你想要的,但是你可以使用一个类分类器来创建一个根据阈值检测异常的实验。您可以轻松地从SQL Server向其提供数据 这可

我想在银行交易记录和总账条目中检测意外交易。 与供应商一样,每月的金额通常为2000美元或5000美元,但突然出现了10000美元或200美元的交易,这是出乎意料的。 我将有多个列参与此异常检测:客户、供应商、账号、交易描述、输入交易的用户(对于总账方)等

我的数据在SQL Server中,因此我正在寻找在TSQL中工作的示例代码。否则我可以依赖R脚本


谢谢你的帮助。

可能不是你想要的,但是你可以使用一个类分类器来创建一个根据阈值检测异常的实验。您可以轻松地从SQL Server向其提供数据


这可能有些过分,但您可以使用免费版本,这超出了您的需要。

一个选项是使用SQL窗口功能获取交易金额的标准偏差,并查找距离标准偏差超过1的条目

CREATE TABLE #tmp(
    Customer nvarchar(255),
    Supplier nvarchar(255),
    AccountNumber nvarchar(255),
    STD decimal(20, 2),
    Amount decimal(20, 2))


  INSERT INTO #tmp (Customer, Supplier, AccountNumber, Amount, STD)
  SELECT Customer, Supplier, AccountNumber, Amount,
    ABS(STDEV(Amount) OVER (PARTITION BY Customer, Supplier, AccountNumber))
  FROM SourceTable

  SELECT *
  FROM #tmp 
  WHERE STD >= 1

我们需要一个模式(最好是测试数据),听起来好像您要求我们编写您的业务规则,这与堆栈溢出无关。如果这是一个编程问题,您能否澄清您不知道如何使用的编程技术?这应该是机器学习的一个良好开端: