Eliminar subconsulta para o valor numérico médio
Busca
A consulta seleciona todos os pontos que começam com "Vancouver" e ficam a uma área de 5 minutos do centro de todos os locais que começam com "Vancouver". Por exemplo, Vancouver South Fraser, Vancouver Fairview e Vancouver Ballantree Place W têm latitudes e longitudes dentro de 5 minutos da latitude e longitude médias. As latitudes e longitudes são armazenadas como (4915, 12311) pares inteiros (significando 49.15'N e 123.11'W).
Código SQL
A seguinte abominação SQL faz o truque:
SELECT
NAME
FROM
STATION
WHERE
DISTRICT_ID = '110'
AND NAME LIKE 'Vancouver%'
AND LATITUDE BETWEEN
(SELECT round((min(LATITUDE) + max(LATITUDE)) / 2)-5 FROM STATION WHERE DISTRICT_ID = '110' AND NAME LIKE 'Vancouver%')
and
(SELECT round((min(LATITUDE) + max(LATITUDE)) / 2)+5 FROM STATION WHERE DISTRICT_ID = '110' AND NAME LIKE 'Vancouver%')
AND LONGITUDE BETWEEN
(SELECT round((min(LONGITUDE) + max(LONGITUDE)) / 2)-5 FROM STATION WHERE DISTRICT_ID = '110' AND NAME LIKE 'Vancouver%')
and
(SELECT round((min(LONGITUDE) + max(LONGITUDE)) / 2)+5 FROM STATION WHERE DISTRICT_ID = '110' AND NAME LIKE 'Vancouver%')
ORDER BY
LATITUDE
Pergunta, questão
Como essa consulta pode ser simplificada para remover a redundância, sem usar uma exibição?
Restrições
O banco de dados é MySQL, mas o ANSI SQL é sempre bom.
Obrigado!