[求助] 如何用 SQL(或者其他方式)实现这个要求(内详)

2019-08-06 11:04:20 +08:00
 2bin

数据格式如下: https://sm.ms/image/42rhuonQbDZYT1S

需求:汇总不同楼层的逗留时长。

想了下没有合适的办法,各位 v 友有没有好的办法,请赐教

1538 次点击
所在节点    问与答
23 条回复
su2018
2019-08-06 13:48:09 +08:00
不知道符不符合你要求

SELECT t.floor, SUM(t.wait_time)wait_time,t.floor_index
FROM (
SELECT visit_date,FLOOR,TIME_TO_SEC(TIMEDIFF(t_time,@startTime)) wait_time,@startTime:=t_time,IF(a.floor=@floor,@index,@index:=@index+1),@index floor_index,@floor := a.floor

FROM test1 a,(SELECT @startTime := '') AS b,(SELECT @floor :=0) AS c,(SELECT @index :=0) AS d WHERE 1

ORDER BY t_time

) t GROUP BY t.floor_index
x66
2019-08-06 14:17:11 +08:00
row_number 根据 t_time 排序,然后自连接 a.row_number = b.row_number +1 ,然后 group by floor,求差再求和就好了
zhuanggu
2019-08-06 19:59:17 +08:00
select floor
,sum(next_time-t_time) as ts
from
(
select floor
,t_time
,lead(t_time,1) over(partition by floor order by t_time ) as next_time
from tablename
) t
group by floor;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/589431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX