2016-09-28 100 views
0

我試圖獲得由下式給出緯度和經度半徑內的總平均價內設置平均。SQL:從結果的半徑(緯度/經度)

我已經試過這樣的事情:

SELECT avg(price) AS average, 
    (6371 * acos(cos(radians(37.3541079)) * cos(radians(ANY_VALUE(`latitude`))) * cos(radians(ANY_VALUE(`longitude`)) - radians(-121.9552356)) + sin(radians(37.3541079)) * sin(radians(ANY_VALUE(`latitude`))))) AS distance 
FROM `Rental` 
HAVING distance <= 20 

但結果是空的。 結果應該看起來像這樣:

平均= 185個

感謝您的幫助。

+0

我想你應該提供更多的細節,比如表格的快照。可能我覺得你錯過了一組一組。如果你提供一些樣品數據,情況可以很清楚 –

回答

0

您在該MySQL擴展它的方式使用HAVING。但是因爲你有AVG(),它也會發揮其正常的作用。

您將需要一個子查詢或到距離測量移動到WHERE條款:

SELECT avg(price) as average 
FROM (SELECT r.*, 
      (6371 * acos(cos(radians(37.3541079)) * cos(radians(ANY_VALUE(`latitude`))) * cos(radians(ANY_VALUE(`longitude`)) - radians(-121.9552356)) + sin(radians(37.3541079)) * sin(radians(ANY_VALUE(`latitude`))))) AS distance 
     FROM `Rental` r 
    ) r 
WHERE distance <= 20; 

換句話說,計算距離。然後使用WHERE來過濾行。和然後聚合的價格。

+0

非常感謝,它現在可以工作。 – Severin

相關問題