我有一张这样的桌子:
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页面上显示为“是”(下面的公里数就是一个例子):
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我搜索并搜索了这个堆栈溢出的历史,但没有找到我今天面对的情况。需要你的建议如何查询。以前谢谢你,GBU一直都是。
发布于 2019-11-22 07:46:59
这不是MySQL的最佳任务。在任何编程语言中通过读取DB 1×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 UserIDhttps://stackoverflow.com/questions/58989217
复制相似问题