2013-03-23 114 views
0

我有一个表,其中有很多冗余点,我想选择不同的点使用(不同),并选择一些行的平均值(如rscp)。 我们这里有一个例子:AVG没有给出正确的值 - Postgresql

| id | point     | rscp | ci 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
| 1 | POINT(10.1192 36.8018) | 10  | 701 
| 2 | POINT(10.1192 36.8018) | 11  | 701 
| 3 | POINT(10.1192 36.8018) | 12  | 701 
| 4 | POINT(10.4195 36.0017) | 30  | 701 
| 5 | POINT(10.4195 36.0017) | 44  | 701 
| 6 | POINT(10.4195 36.0017) | 55  | 701 
| 7 | POINT(10.9197 36.3014) | 20  | 701 
| 8 | POINT(10.9197 36.3014) | 22  | 701 
| 9 | POINT(10.9197 36.3014) | 25  | 701 

什么,我想是这样的表如下:(rscp_avg是冗余点的RSCP的平均值)

| id | point     | rscp_avg | ci 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
| * | POINT(10.1192 36.8018) | 11   | * 
| * | POINT(10.4195 36.0017) | 43   | * 
| * | POINT(10.9197 36.3014) | 22.33  | * 

我想这一点,但它给了我一个错误的平均值!

select distinct on(point) 
id,st_astext(point),avg(rscp) as rscp_avg,ci 
from mesures 
group by id,point,ci; 

感谢您的帮助(^_^)

回答