mysql如何在sum中使用减法

mkshixfv  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(642)

我有一个列为“rank(like id)”、“latitude”、“longitude”的表。现在我的选择是这样的:

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;

谢谢大家。

kmbjn2e3

kmbjn2e31#

你想要那个 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;

相关问题