2012-07-28 116 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的查詢。