我有一个列为“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;
谢谢大家。
1条答案
按热度按时间kmbjn2e31#
你想要那个
lead()
函数,但这在mysql中不可用。我建议使用
left join
: