2012-07-28 66 views
-1

这里是我的表查询以查找每个范围的平均值?

 
GID | Distance (KM) | Subdistance (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米 每百米 每500米

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

+0

你能给出一个小例子,说明你对这个输入有什么样的输出?我认为这应该是相当简单的一个'group by',但我怀疑是否需要'generate_series'或其他东西。 – Wolph 2012-07-28 10:16:39

回答

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-width,而不是处理一个bin-width的查询。