我有一个带有字段 ID、PLAYER、TIMESTAMP 和 ACTION 的 MySQL 表 LOGIN_LOG。ACTION 可以是“登录”或“注销”。只有大约 20% 的登录有伴随的注销行。对于那些这样做的人,我想计算平均持续时间。
我在想类似的东西
select avg(LL2.TIMESTAMP - LL1.TIMESTAMP)
from LOGIN_LOG LL1
inner join LOGIN_LOG LL2 on LL1.PLAYER = LL2.PLAYER and LL2.TIMESTAMP > LL1.TIMESTAMP
left join LOGIN_LOG LL3 on LL3.PLAYER = LL1.PLAYER
and LL3.TIMESTAMP between LL1.TIMESTAMP + 1 and LL2.TIMESTAMP - 1
and LL3.ACTION = 'login'
where LL1.ACTION = 'login' and LL2.ACTION = 'logout' and isnull(LL3.ID)
这是最好的方法,还是有更有效的方法?