MySQL 如何在求和中使用减法

标签 mysql sql database sum

我有一个包含列“排名(如 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           ..                                  ..
..    ..         ..           ..                                  ..

如何更改代码以使用减法而不是求和?

我需要从当前值中减去下一行的值。然后在result中添加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;

谢谢你。

最佳答案

您需要 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;

关于MySQL 如何在求和中使用减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50666800/

相关文章:

php - 规划 SQL 数据库所需的帮助

php - Laravel 查询临时表

sql - 从一个表中选择所有内容,从另一个表中选择一些关于 SQL joining on 2 variables

sql - 如何在 Talend 中使用一个输入查询多个表?

android - 在 Android Studio 项目中集成 SQLCIPHER

Javascript 回调 - 为什么它不起作用?

php - 为 SELECT...BETWEEN 查询创建正确的日期格式

mysql : Get latest value and sum of values from previous hour

database - 来自值组合的值 - 数据库设计

php - 没有选项,无法选择。如何在 Javascript 中调用数据库中的数据?