我试图通过给定的纬度和经度来获得半径内的总平均价格。
我尝试过这样的事情:
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
过滤行。并且然后汇总价格。