2016-10-19 7 views
1

シナリオ:SQL Serverデータベースに格納されたさまざまな勘定科目に一連の月間請求書があります。SQL Server:find逸脱する値のインスタンス

すなわち

AccountNum  BillNum  BillMonth BillTotal  
--------------------------------------------------- 
123456   123456-1  201601  $100000.00  
123456   123456-2  201602  $100000.00  
123456   123456-3  201603  $100000.00  
123456   123456-4  201604  $130000.00  
456789   456789-1  201601  $250000.00  
456789   456789-2  201602  $250000.00  
456789   456789-3  201603  $250000.00  
456789   456789-4  201604  $200000.00  

私は、一定時間> XX%異なる外れ値/偏差が表示されますクエリを記述しようとしています。したがって、上記のデータセットでは、4行目と8行目は、通常の「100万ドル/月」と考えられているものと大きく異なり、潜在的に問題を示しています。

私は口座ごとに平均を取る方法が必要です(各口座に異なる請求書/料金などがあります)、その月の偏差が10%を超える場所を見つける必要があります。

私はSTDEVを使用しようとしましたが、それをうまく動作させることはできません。

答えて

1

あなたは次のクエリを使用して試すことができます:

SELECT AccountNum, BillNum, BillMonth, BillTotal, 
     CASE 
      WHEN ABS(BillTotal - AVG(BillTotal) OVER (PARTITION BY AccountNum)) > 
       STDEV(BillTotal) OVER (PARTITION BY AccountNum) 
      THEN 1 
      ELSE 0 
     END AS deviates 
FROM mytable 

上記のクエリは、特定のためのフィールドの平均値からの標準偏差を超えて逸脱BillTotal量を有するもののレコードの1を返しAccountNum

+0

ありがとうございました。それがうまくいくと思います。私はまだ月にアカウントのための複数の請求書があるこれと別の問題があります。私は1つの請求書しか持たない勘定を含めることになると思っています。なぜならそうでなければあまりにも誤っているかもしれないからです。 – TaylorN

関連する問題