gpt4 book ai didi

php - 计算每个用户在系统上消耗的时间的有效方法

转载 作者:行者123 更新时间:2023-11-28 23:32:56 25 4
gpt4 key购买 nike

大家好,我有一个 mySQL 表,如下所示:

|Id |username           |timestamp              |timestring     |
+---+-------------------+-----------------------+---------------+
|4 |user1 |2016-02-11 11:50:21 |20160211115021 |
|3 |user3 |2015-12-04 15:55:46 |20151204155546 |
|2 |user2 |2015-12-03 19:54:48 |20151203195448 |
|1 |user1 |2015-11-27 10:24:30 |20151127102430 |
+---+-------------------+-----------------------+---------------+

这显示了互斥面板上的访问日志(每次只能有一个人可以保持登录状态)。我想做的是做一些统计数据,其中大部分都很简单,但我很难计算面板上花费的时间,我想知道每个用户,他/她有多少时间“阻止”了系统。

实际上,我正在创建一个用户名数组,我在其中逐步累加用户从“下一个”用户开始的所有秒数(由 id 获取)。

我觉得这对系统来说非常耗时,我想有一个更有效的方法来做,有没有办法使用 mySQL 来获得这个,或者更好地建立一个新表,我只是在其中存储所有用户名并不时添加时间?还是使用 PHP 更好?

我必须考虑到 mySQL 是共享的,所以我的资源不是无限的。

最佳答案

通常,我会创建一个子查询,使用 id 字段将您的表自身连接起来,其中右侧表中的 id 大于左侧表中的 id,并从中获取 min(timestamp)右边的 table 。在外部查询中,只需总结 2 个时间戳之间的差异:

select t.username, sum(t.endtime-t.starttime) as seconds
from
(select t1.id, t1.username, t1.timestamp as starttime, min(t2.timestamp) as endttime
from yourtable t1
left join yourtable t2 on t1.id<t2.id
group by t1.id, t1.username, t1.starttime) t
group by t.username

如果您知道 id 字段中没有空白,那么您可以简化您的查询:

select t1.username, sum(t2.timestamp-t1.timestamp) as second 
from yourtable t1
left join yourtable t2 on t1.id+1=t2.id
group by t1.username

关于php - 计算每个用户在系统上消耗的时间的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com