【发布时间】:2015-04-10 07:50:43
【问题描述】:
我想计算上一个会话的用户开始时间和停止时间之间的差异..
表包含:用户数字、开始/停止 unix 时间戳。它在用户和启动之后排序
user start stop
1 150000 150010
1 160011 160050
1 160100 160200
2 150011 150023
2 155001 155055
2 160001 160500
3 159001 159550
我希望结果看起来像:
user start stop diff
1 150000 150010 160011-150010=10001
1 160011 160050 160100-160050
1 160100 160200 0 (new user on next row)
2 150011 150023 155001-150023
2 155001 155055 160001-155055
2 160001 160500 0 (new user on next row)
3 159001 159550 and so on..
是否有可能做到这一点,如果可以,怎么做?
【问题讨论】:
-
我敢打赌,这里的业务逻辑存在缺陷。为什么用户不会因为下一行有另一个用户而有时间差?另外,我们能否确定表格是按用户 ID 和开始日期排序的?
-
我无法创造任何有用的东西。忘记写了,但是是的,表格是在用户和启动之后排序的!我只看用户的差异,而不是用户的差异!奥克
-
如果我正确理解您的数据,那么每一行的差异就是同一用户的时间差异。不涉及其他用户。特别是因为它们的时间间隔在某些情况下会重叠。
-
没错!就像我上面说的,数据在用户和启动之后排序。所以对于上面的例子,用户 1 只有 3 个会话,用户 2 在表中只有 3 个会话..
-
仅供参考,Ake 和 @ytg,数据未在关系 DBMS 中排序。绝不。这就是
ORDER BY子句的用途。如果不指定,则无法确定每次执行查询时都以相同的顺序返回数据。
标签: mysql