当前位置: 首页 > 面试题库 >

平均间隔内的多个平均值

蔚丰
2023-03-14
问题内容

我正在尝试学习SQL,所以请耐心等待。我正在使用PostgreSQL 9.3

我想根据日期窗口对一列进行平均。我能够编写窗口函数来完成一个集合,interval但是我希望能够随着不断增长做到这一点interval。我的意思是:

average values from date_0 to date_1
average values from date_0 to date_2
average values from date_0 to date_3
..... so date date_0 stays the same and date_x grows and creates a larger sample

我假设有一个比对我要平均的每个范围运行查询更好的方法。任何建议表示赞赏。谢谢你。

编辑

我正在尝试创建均匀分布的垃圾箱,以用于汇总表的值。
我的间隔是:

(MAX(date) - MIN(date)) / bins

这里date是一个表的列
并且 bins是并列我想表分成数。

date_0= MIN(日期)
date_n= MIN(日期)+(间隔* n)


问题答案:

我建议使用方便的功能
width_bucket()

要获取每个时间段(“ bin”)的平均值:

SELECT width_bucket(extract(epoch FROM t.the_date)
                  , x.min_epoch, x.max_epoch, x.bins) AS bin
     , avg(value) AS bin_avg
FROM   tbl t
    , (SELECT extract(epoch FROM min(the_date)) AS min_epoch
            , extract(epoch FROM max(the_date)) AS max_epoch
            , 10 AS bins
       FROM   tbl t
      ) x
GROUP  BY 1;

要获得(逐步)增长时间间隔内的“运行平均值”:

SELECT bin, round(sum(bin_sum) OVER w /sum(bin_ct) OVER w, 2) AS running_avg
FROM  (
   SELECT width_bucket(extract(epoch FROM t.the_date)
                     , x.min_epoch, x.max_epoch, x.bins) AS bin
        , sum(value) AS bin_sum
        , count(*)   AS bin_ct
   FROM   tbl t
       , (SELECT extract(epoch FROM min(the_date)) AS min_epoch
               , extract(epoch FROM max(the_date)) AS max_epoch
               , 10 AS bins
          FROM   tbl t
         ) x
   GROUP  BY 1
   ) sub
WINDOW w AS (ORDER BY bin)
ORDER  BY 1;

使用the_date而不是date作为列名,避免使用保留字作为标识符。
由于width_bucket()目前仅针对double precision和实现numeric,因此我从中提取历元值the_date。此处的详细信息:
在PostgreSQL中聚集(x,y)坐标点云



 类似资料:
  • 取一定时间内的平均值 用法 Your browser does not support the video tag. 案例:数据变化趋势 功能:加入平均值和不加平均值的折线图形成对比,显示数字改变的规律 工作原理 结果将会是一段时间段输入的平均值。你可以设置配置项中的时间段长度(工程师叫它采样窗) 提示 短的采样窗意为着输出对输入变化的反应更敏感。

  • 问题内容: 我无法获得熊猫列的平均值或均值。有一个数据框。我在下面尝试的任何事情都没有给我该列的平均值 以下返回几个值,而不是一个: 这样: 问题答案: 如果您只想要列的均值,请选择列(这是一个系列),然后调用:

  • 我不能得到熊猫的平均值或平均值。有一个数据框。下面我尝试的东西都没有给我列的平均值 以下内容返回多个值,而不是一个值: 这也是:

  • Python是否有一个SciPy函数或NumPy函数或模块来计算给定特定窗口的一维数组的运行平均值?

  • 我想计算两个相关数组的许多连续间隔的均值和标准偏差(如下所示),其中前两列分别是(比方说)时间和距离。第三、四、五是平均时间(中心)、平均距离和偏差标准。(实际上这是我亲手做的)。在这个例子中,平均值和标准差是为每三个连续的间隔做出的(但通常可以超过4×4,10×10,以此类推)。 所以,我有类似的长列表,我想计算(可能用PANDAS,NUMPY和/或SCIPY)类似的东西,做一些循环,创建平均时

  • 然后我需要一个得到平均高点的函数。下面是我做的: 但当我测试它时,我得到的回答不是平均值。我做错了什么?有人能提供线索吗?