gpt4 book ai didi

mysql - PHP MySQL 如何计算行之间的距离?

转载 作者:行者123 更新时间:2023-11-29 15:27:21 26 4
gpt4 key购买 nike

我有一个这样的表:

stepID   | UserID| Date        | Lat        | Lng
1 |1 | 2019-10-11 | -7.2905838 | 112.5655568
2 |1 | 2019-10-11 | -7.2349607 | 112.6106177
3 |1 | 2019-10-11 | -7.2345435 | 112.6112432
4 |1 | 2019-10-12 | -7.2529265 | 112.6542999

我需要计算用户在同一天(例如2019-10-11)访问过的距离。那么PHP页面上会显示的是(下面的KM量是一个例子):

From step 1 to 2: 2 KM
From step 2 to 3: 3 KM
From step 3 to 4: 3 KM
TOTAL FOR TODAY: 8 KM

我已经在谷歌上搜索过,也在这个 stackoverflow 的历史记录中进行了搜索,但没有找到像我今天遇到的情况。需要您的建议如何查询这个。之前一直谢谢你,GBU。

最佳答案

这不是 MySQL 的最佳任务。在任何编程语言中,通过从 DB 1 by 1 读取行来执行该操作会好得多。但是,如果您想完全使用 MySQL,那么类似的东西(假设 StepID 是没有间隙的连续数字):

SELECT UserID, SUM(km) total
FROM (
SELECT t1.UserID,
DEGREES(ACOS(LEAST(1.0, COS(RADIANS(t1.Lat))
* COS(RADIANS(t2.Lat))
* COS(RADIANS(t1.Lon- t2.Lon))
+ SIN(RADIANS(t1.Lat))
* SIN(RADIANS(t2.Lat))))) km
FROM table t1
JOIN table t2 ON t1.UserID = t2.UserID and t1.StepID = t2.StepID - 1
) t
GROUP BY UserID

我从以下位置得到了公式:https://stackoverflow.com/a/24372831/2244262

关于mysql - PHP MySQL 如何计算行之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58989217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com