Прежде всего, обратите внимание, что ваше определение «в течение 5 минут друг от друга» не определяет единственное решение и что ваш (MIN () + MAX ()) / 2 не является средним, а просто средним значением min и max. Возможно, вы ищете AVG () в своих подзапросах.
Во-вторых, вы не получаете результаты в течение 5 секунд друг от друга, но записи, долгота и широта которых не превышают 10 секунд (что по диагонали может быть ближе к 14).
В MySQL вы можете использовать переменные сеанса, такие как:
SET @avg_lat := (SELECT round(avg(LATITUDE)) FROM STATION WHERE DISTRICT_ID = '110' AND NAME LIKE 'Vancouver%');
SET @avg_long := (SELECT round(avg(LONGITUDE)) FROM STATION WHERE DISTRICT_ID = '110' AND NAME LIKE 'Vancouver%');
SELECT
NAME
FROM
STATION
WHERE
DISTRICT_ID = '110'
AND pow(LATITUDE-@avg_lat,2)+pow(LONGITUDE-@avg_long,2)<25
ORDER BY
LATITUDE
Даже если в этом нет необходимости (как в запросе, написанном выше, обе переменные встречаются только один раз).
РЕДАКТИРОВАТЬ: Упс, неправильно прочитал вопрос. Это радиус центра - поэтому замените 25 на 100 (и пока решите, хотите ли вы использовать меньше или равно). Кроме того, если центр является центром ограничительной рамки, то ваша (min () + max ()) / 2 - правильная формула, а не мое предложение. Тем не менее «центр всех мест» немного расплывчат, поэтому я оставляю свой ответ (его легко изменить).
РЕДАКТИРОВАТЬ2: Только что заметил, что единицы в моем запросе не являются правильными, если широта хранится в сантиметрах, то сравнение должно быть тоже с сантиминутами (10 * 100) ^ 2 = 1000000
И, наконец, ваше решение придерживаться (min () + max ()) / 2 приведет к случаям, когда у вас может быть одна строка, далеко идущая к максимальному и минимальному значениям, из-за которой запрос может пропустить любой из результатов. (и может случиться, что обычно все местоположения с похожими названиями расположены рядом друг с другом, но нередко бывает, что другое местоположение начинается с того же имени, которое является изолированным местом вдали от конгломерата местоположений)
Что касается 5-минутной области, если быть точным, лучше сказать, что это 10x10-минутная область, это то, что возвращают запросы.
EDIT3: формула, использованная выше для расстояния, не очень точна, если вы отойдете от экватора.
Вот лучшее приближение расстояния формула
Для серьезной работы вам может понадобиться что-то вроде this