如何计算没有异常值的平均值

时间:2017-10-10 15:17:58

标签: sql sql-server

我试图计算没有异常值的平均值(在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]

1 个答案:

答案 0 :(得分:0)

在一个层面上,这个问题没有意义,因为平均值会发生变化。虽然我会回答这个问题,但你可能还想要一些其他的异常值定义。

add_action

我不知道这是如何适合您的查询,这似乎是不必要的复杂。