我的表中有一些人为错误条目。有些人缺少零,有些人的材料比应有的多,等等。所以我试图在整个表中扫描以查找条目组中的一些错误。 表格如下:
| Work Order | Product | Material Qty
---------------------------------
| 1 | Item A | 10
| 2 | Item A | 25
| 3 | Item A | 12
| 4 | Item A | 9
| 5 | Item X | 52
| 6 | Item X | 20
| 7 | Item X | 23
| 8 | Item X | 24
| 9 | Item X | 2
| 10 | Item Z | 20
| 11 | Item Z | 5
---------------------------------
现在,WO和WO项目不是顺序的,我只是为了举例而在此处将其写为顺序。
正如您所看到的,那些项目A应该有10左右的数字,给予或采取一些。项目X应该在22左右,给出或取一些,同时查询应该将项目Z标记为全部可疑,因为没有足够的数据来关联。所以我需要隔离第2,5和9,10和11号WO,供人们审核。知道怎么样?
我一直在尝试创建它们的平均值,并使用百分比来消除它们。但有时,百分比数字变化太大。并且在项目Z的情况下,没有足够的数据来选择哪个数字是正常数字,哪个数字是不规则数字,我需要标记它们以进行验证,在这种情况下,减少百分比将无济于事。
此外,如果我将它们减少到变量百分比与平均值,它的差异仍然太宽,无法标记其中一个。
有什么想法吗?因为这次我真的被困住了。
答案 0 :(得分:2)
从统计学角度来看,您可能希望从STDEV
standard deviation函数开始。
select *
from
(
select *,
AVG(qty) OVER( Partition by product) av,
STDEV(qty) OVER( Partition by product) sd,
COUNT(*) over (Partition by product) c
from yourtable
) v
where ABS(qty-av)>sd or c<3