MySQL Как использовать substract среди сумм - PullRequest
0 голосов
/ 03 июня 2018

У меня есть таблица со столбцами «Ранг (как ID)», «Широта», «Долгота».Теперь мой выбор работает так:

Rank Latitude  Longitude Latitude_current_row_plus_next  Longitude_current_row_plus_next
1      5          3           11   --5+6                          7 --3+4      
2      6          4           7    --6+1                          6 --4+2
3      1          2           6    --1+5                          7 --2+5
4      5          5           ..                                  ..
..    ..         ..           ..                                  ..

что я ожидаю получить:

Rank Latitude  Longitude Latitude_current_row_minus_next  Longitude_current_row_minus_next
1      5          3           1  --abs(5-6)                       1 --abs(3-4)  
2      6          4           5  --abs(6-1)                       2 --abs(4-2)
3      1          2           4  --abs(1-5)                       3 --abs(2-5)
4      5          5           ..                                  ..
..    ..         ..           ..                                  ..

Как изменить код для использования вычитания вместо суммы?

Мне нужно вычесть значение следующей строки из текущего значения.А затем добавьте функцию ABS к результату

SELECT   a.rank,a.latitude,a.longitude,
(SELECT SUM(latitude) FROM temp 
 WHERE rank <= a.rank + 1 AND rank >= a.rank) as latitude_current_row_plus_next,
(SELECT SUM(longitude) FROM temp
 WHERE rank <= a.rank+1 AND rank >= a.rank) as longitude_current_row_plus_next 
FROM temp a;

Спасибо за всех.

1 Ответ

0 голосов
/ 03 июня 2018

Вам нужна функция lead(), но она недоступна в MySQL.

Я бы порекомендовал использовать left join:

select t.*,
       abs(t.latitude - tnext.latitude) as lat_diff,
       abs(t.longitude - tnext.longitude) as lng_diff
from temp t left join
     temp tnext
     on t.rank = tnext.rank - 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...