场景如下:我有一个披萨场所的数据库,其中包含评论平均值。我希望用户能够在一个位置附近找到披萨店并按距离排序。挺直的。我不想按距离严格排序,而是按照评价平均值进行排序,但仅限于小组 - 比如每15英里。通过这种方式,他们可以获得接近他们的结果,但最佳位置将被推到每个距离组的顶部。我最初的想法是将每个结果四舍五入到最接近的15英里增量并对该结果进行排序,其次是按照评估平均值:
select p.*, floor((ST_Distance(p.geom, ST_GeomFromText('CENTER_POINT_HERE', 4326), true) / 1609.34) / 15) * 15 as distance
from geo_test p
where ST_DWithin(p.geom, ST_GeomFromText('CENTER_POINT_HERE', 4326), SEARCH_RADIUS_HERE)
order by distance asc, rating_average desc