我试图计算没有异常值的平均值(在2个标准偏差中)。我不断收到错误消息“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且聚合的列是外部引用。
select
b.[Location],
b.[txtOrderSubType],
avg (DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate])) as
[Avg Duration in min],
from dbo.tbl1
Where
DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate])< (
AVG(DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate]))+
2*STDEVP(DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate])))
and DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate])> (
AVG(DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate]))-
2*STDEVP(DATEDIFF(MINUTE, b.[dteActualStartDate], b.[dteActualEndDate])))
group by b.[Location], b.[txtOrderSubType]
答案 0 :(得分:0)
在一个层面上,这个问题没有意义,因为平均值会发生变化。虽然我会回答这个问题,但你可能还想要一些其他的异常值定义。
add_action
我不知道这是如何适合您的查询,这似乎是不必要的复杂。