Sql 甲骨文浮动平均

Sql 甲骨文浮动平均,sql,oracle,average,Sql,Oracle,Average,我在select中得到了这个小语句,它以分钟计算差异。两者都是日期 ((Cars.Closed - Costomer.BookedDate)*24* 60) differnece_in_minutes 我的结果如下: differnece_in_minutes 340 23 10 4500 245 使用AVG(((Cars.Closed-Costomer.BookedDate)*24*60)在分钟内的差异 给我平均值。到目前为止没有问题 但是我想计算浮动平均值,而不

我在select中得到了这个小语句,它以分钟计算差异。两者都是日期

 ((Cars.Closed - Costomer.BookedDate)*24* 60) differnece_in_minutes
我的结果如下:

  differnece_in_minutes
  340
  23
  10
  4500
  245
使用
AVG(((Cars.Closed-Costomer.BookedDate)*24*60)在分钟内的差异

给我平均值。到目前为止没有问题

但是我想计算浮动平均值,而不是基本的平均值

我在网上找到了一些东西,但我不知道到底应该使用哪个函数以及如何使用

我希望它忽略与“正常”平均值相比非常高或非常低的值


我发现了类似于移动平均值、滚动平均值之类的内容。

如果您要查找“移动”或“滚动”平均值,可以使用windowing子句,例如:

WITH t AS 
    (SELECT 1 AS N, 10 AS val FROM dual
    UNION ALL SELECT 2, 20 FROM dual
    UNION ALL SELECT 3, 20 FROM dual
    UNION ALL SELECT 4, 30 FROM dual
    UNION ALL SELECT 5, 25 FROM dual
    UNION ALL SELECT 6, 35 FROM dual
    UNION ALL SELECT 7, 33 FROM dual
    UNION ALL SELECT 8, 18 FROM dual
    UNION ALL SELECT 9, 1500 FROM dual
    UNION ALL SELECT 10, 15 FROM dual)
SELECT N, Val,
    AVG(val) OVER (ORDER BY N ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) AS rolling_average
FROM t;


         N        VAL ROLLING_AVERAGE
---------- ---------- ---------------
         1         10      16.6666667
         2         20              20
         3         20              21
         4         30              26
         5         25            28.6
         6         35            28.2
         7         33           322.2
         8         18           320.2
         9       1500           391.5
        10         15             511

10 rows selected.

例如,第6行是第4行到第8行的平均值,即平均值(30,25,35,33,18)

什么是“浮动平均值”?如果您提供样本数据和预期结果,以向我们展示您的意思,这将有所帮助。仅是很少出现的值(如“畸变”)极低或极高。例如,我的结果中的“4500”会扭曲我的“平均值”,我希望你知道我的意思。听起来你想排除显著的异常值。一个例子是在第一次通过时计算平均值和标准偏差,然后排除任何超出平均值+/-(n)标准偏差的内容。根据数据的性质,需要调整(n)的值。此外,如果您的数据是正态分布的,您可能会发现这会意外地排除非“异常”的数据。简而言之,您需要阅读一些统计文本,选择一个算法,然后来这里询问如何实现它。@piguy-不,没有预先制作的函数,因为“异常”的定义取决于上下文和业务规则。您需要选择算法、启发式、业务规则,然后使用SQL中的stats函数(或其他函数)来实现它。这个问题没有一个单一的答案/定义。