SQL:半径(纬度/经度)内结果集的平均值

SQL: Average from result set within a radius (Latitude / Longitude)

我正在尝试根据给定的纬度和经度获取半径范围内的总平均价格。

我试过这样的事情:

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

但是结果是空的。 结果应如下所示:

average = 185

感谢您的帮助。

您正在以 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 过滤行。然后然后合计价格。