2017-05-25 8 views
0

平均値を取得します。より遠く離れているものを含め、すべてのレジスタのAVG(価格)限り、私は平均値をもたらすクエリをやっている

avg(price)  |distance 
76.66666666666667|78.82683615218286 

distance 
78.82683615218286 
6.351835016010867 

私が持っているしたいと思います:AVG(価格)がなければ、右のみAVG(価格)なしで100キロ の距離の範囲内にあるものもたらします110

テーブル::などの平均価格は、

id | name|price|lat  |lng 
1 |joana|100 |-23.542746 |-46.651302 
2 |maria|120 |-23.241726 |-45.883827 
3 |lucia|40 |-22.8117593|-45.1786567 

オブリガード!

答えて

0

は、サブクエリを使用します。

SELECT avg(price), 
FROM (SELECT w.*, 
      (6371 * acos(
cos(radians(-23.2632227)) 
* cos(radians(lat)) 
* cos(radians(lng) - radians(-45.9414303)) 
+ sin(radians(-23.2632227)) 
* sin(radians(lat)) 
) 
      ) AS distance 
     FROM fcs_workers 
    ) w 
WHERE distance < 90; 

実際に、あなたはまた、サブクエリでHAVINGを維持することができます。 。 。中間テーブルのサイズを減らすため、おそらく少しのパフォーマンス向上があります。

関連する問題