【问题标题】:A query to Find average value for each ranges?查找每个范围的平均值的查询?
【发布时间】:2012-07-28 09:55:41
【问题描述】:

这是我的桌子

标识 |距离(公里) |子距离 (KM) | Iri_avg ------------------------------------------------- 1 | 13.952 | 0 | 0.34 2 | 13.957 | 0.005 | 0.22 3 | 13.962 | 0.010 | 0.33 4 | 13.967 | 0.015 | 0.12 5 | 13.972 | 0.020 | 0.35 ...

我想为每个范围找到Iri_avg 的 AVG, 比如……

每 5 米(默认) 每 10 米 每 100 米 每500米

解决这个问题的 PostgreSQL 查询是什么?

【问题讨论】:

  • 你能举一个小例子来说明你期望这个输入会得到什么样的输出?我认为使用group by 应该相当简单,但我怀疑是否需要generate_series 或其他东西。

标签: postgresql average postgresql-9.1


【解决方案1】:

您的问题不清楚。您的数据有两个距离列,您指的是哪一个?

这是一个如何根据子距离获取平均值的示例。

select floor(subdistance*1000)/5.0)*5.0 as lower_bound, avg(iri_avg) as avg_ari_avg
from t
group by floor(subdistance*1000)/5.0)*5.0
order by 1

表达式“floor(subdistance*1000)/5.0)*5.0”得到最接近的小于该值的 5 米增量。您可以将“5”替换为“10”或“100”进行其他分箱。

这是一个插图。目前尚不清楚您要对哪一列进行 bin 处理,对空 bin 执行什么操作,以及您是在单个查询中查找所有 bin 宽度还是只处理一个 bin 宽度的查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多