作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个表格,每行都有日期和纬度、经度值。我想要一个 sql 查询来计算一天中辛苦的距离。
说日期 2013-03-01
我想要旅行的总距离,
ID DATE LAT LONG V_ID
---------------------------------------------------
123 2013-03-01 06:05:24 45.544 86.544 1
124 2013-03-01 06:15:17 45.676 86.676 1
125 2013-03-01 06:25:24 46.544 86.544 2
126 2013-03-01 06:38:14 46.651 86.651 2
127 2013-03-02 07:12:04 46.876 86.876 1
128 2013-03-02 10:38:14 46.871 86.871 1
129 2013-03-02 10:56:14 46.871 86.671 2
130 2013-03-02 15:28:02 46.243 86.871 2
为了计算距离我写了一个sql函数:
CREATE FUNCTION [dbo].[fnCalcDistanceKM](@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT
AS
BEGIN
RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END
但我想要一天和一天 2013-03-01
的总行驶距离 我有前 四行
我想要 的总行驶距离2013-03-01
与此日期类似,2013-03-02
有最后四行,我如何计算这些行的距离。
最佳答案
您可以使用带有 ROW_NUMBER()
的自连接来获得这样的行进距离。
查询
;WITH CTE AS
(
SELECT *,CONVERT(DATE,[Date]) as tday,ROW_NUMBER()OVER(PARTITION BY CONVERT(DATE,[Date]) ORDER BY [Date] ASC) rn
FROM Travel
)
SELECT T1.tday,SUM([dbo].[fnCalcDistanceKM](T1.lat,T2.lat,T1.long,T2.long)) as dist
FROM CTE T1
INNER JOIN CTE T2
ON T1.tday = T2.tday
AND T1.rn = T2.rn -1
GROUP BY T1.tday
输出
| tday | dist |
|------------|--------------------|
| 2013-03-01 | 129.40048639456964 |
| 2013-03-02 | 87.36216677343607 |
关于SQL查询基于时间戳和经纬度的一天中行驶的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872586/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!