PostGIS - сортировка результатов близости по группам по расстоянию от центра
Сценарий таков: у меня есть база пиццерий со средними показателями. Я хочу, чтобы пользователи могли находить пиццерии рядом с местоположением и сортировать их по расстоянию. Довольно прямо вперед. Вместо строгой сортировки по расстоянию я также хотел отсортировать по среднему показателю обзора, но только по группам, скажем, каждые 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