Есть ли лучший способ, которым я могу сделать это? - PullRequest
0 голосов
/ 11 апреля 2019

Есть ли лучший способ использовать формулу ROUND в моем операторе SELECT в качестве фильтров в предложении WHERE?

Как вы можете видеть в моем запросе, у меня есть следующий код: round ((st_distance (ST_Point (vefpicklngactual, vefpicklatactual) :: география, ST_Point (pickgridx, pickgridy)) / 1609.344) :: numeric, 2)в моем операторе SELECT я также использую их в своем предложении WHERE, я попытался использовать его в качестве псевдонима, затем вызвал псевдоним в своем предложении WHERE, но он не работал.

SELECT vefid, veftripid, 
concat(vefpicklatactual, ' ', vefpicklngactual) AS vef_pick,
concat(pickgridy, ' ', pickgridx) AS mta_pick,
round((st_distance(ST_Point(vefpicklngactual,vefpicklatactual)::geography,ST_Point(pickgridx,pickgridy))/1609.344)::numeric,2) AS pick_calc,
concat(vefdroplatactual, ' ', vefdroplngactual) AS vef_drop,
concat(dropgridy, ' ', dropgridx) AS mta_drop,
round((st_distance(ST_Point(vefdroplngactual,vefdroplatactual)::geography,ST_Point(dropgridx,dropgridy))/1609.344)::numeric,2) AS drop_calc
FROM feb_2019_recon
WHERE round((st_distance(ST_Point(vefpicklngactual,vefpicklatactual)::geography,ST_Point(pickgridx,pickgridy))/1609.344)::numeric,2) > 0.5
OR round((st_distance(ST_Point(vefdroplngactual,vefdroplatactual)::geography,ST_Point(dropgridx,dropgridy))/1609.344)::numeric,2) > 0.5;

Этот запрос уже работает нормально,Мне просто нужно несколько советов, где я могу уточнить этот запрос, чтобы сделать его более чистым и уменьшить избыточность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...