在mysql查询中,如果子句没有完成,是否可以使用绕过1行的条件。下面是vicidial系统的一个可能场景:
+--------------+---------------------+-----------------+----------------+
| username | event_date | event |event_epoch_time|
+--------------+---------------------+-----------------+----------------+
| admin| 2020-12-29 14:59:08 | login |1609253948 |
| admin| 2020-12-29 15:00:06 | logout |1609254006 |
| admin| 2020-12-29 15:14:51 | login |1609254891 |
| admin| 2020-12-29 15:15:00 | login |1609254900 |
| admin| 2020-12-29 15:59:01 | logout |1609257541 |
+--------------+---------------------+-----------------+----------------+
在表中,我为同一个用户登录了2次,当用户关闭浏览器而不注销时,问题可能会发生。有没有可能计算出 SUM (event_epoch_time)
其中这是每2个事件的注销登录的总和?
因此,总时间将是前2行和后2行,忽略下一行
| admin| 2020-12-29 15:14:51 | login |1609254891 |
1条答案
按热度按时间yks3o0rb1#
我知道你想忽略连续登录,只考虑最后一个。
可以使用窗口函数。这里有两种方法
lag()
,在mysql 8.0中提供。如果注销之前总是有一个登录名,您可以执行以下操作:
我们还可以调整查询,使其忽略连续的注销: