SQL Server: searchz l'instance de valeurs qui diffèrent

Scénario: J'ai des factures sur différents counts, stockées dans une database SQL Server, sur une série de mois.

c'est à dire

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 

J'essaie d'écrire une requête qui montrera des valeurs aberrantes / écarts qui diffèrent de> xx% pour une période de time donnée. Ainsi, dans l'set de données ci-dessus, les lignes 4 et 8 diffèrent sensiblement de ce que je considérerais comme le montant «normal» de 100 000 $ par mois, ce qui pourrait indiquer un problème.

J'ai besoin d'un moyen de faire la moyenne des factures par count (comme chaque count a une facture / charges différente, etc.) et de find où l'écart est plus que disons 10% pour un mois donné.

J'ai essayé d'utiliser STDEV mais je n'arrive pas à le résoudre.

Vous pouvez essayer d'utiliser la requête suivante:

 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 

La requête ci-dessus renvoie un 1 pour les loggings ayant un montant BillTotal qui s'écarte de plus de l'écart-type de la valeur moyenne du champ pour le AccountNum spécifique.