【发布时间】:2015-02-16 11:44:52
【问题描述】:
在 MySQL 数据库上,我有下表(这是客户的面板数据)
user | tab | action | time|
77 - login 1407171344
77 user-info view 1407171400
77 traffic select 1407171407
77 - login 1407171440
65 - login 1407171505
65 change select 1407564830
65 change pay 1407579352
65 - login 1407579442
65 - login 1407579765
77 - login 1407579866
77 - login 1407680000
77 promotion bank 1407171400
77 promotion pay 1408100946
65 traffic select 1407171400
65 traffic pay 1408114734
65 - login 1408125796
65 service extend 1408192741
我有很多具有不同客户 ID 的行。我想计算每个客户的活动会话数。也就是说,我想计算客户登录并在登录后执行其他操作的次数。因此,两次连续登录而中间没有任何操作不计入会话。会话的结束可以由下次登录代理。对于用户 77,前三行 (action:login,select,view) 构成一个会话,但下一次登录不会,因为没有采取其他操作。因此,在上表中,用户 77 有两个活动会话,用户 75 有 3 个活动会话。
活动会话如下:(重复登录不会被删除)
user | tab | action | time|
77 - login 1407171344
77 user-info view 1407171400
77 traffic select 1407171407
65 - login 1407171505
65 change select 1407564830
65 change pay 1407579352
65 - login 1407579765
77 - login 1407680000
77 promotion bank 1407171400
77 promotion pay 1408100946
65 traffic select 1407171400
65 traffic pay 1408114734
65 - login 1408125796
65 service extend 1408192741
如何计算活动会话数?提前致谢。
附:我曾尝试在 R 中导入数据,但它是一个大数据,而且 R 的循环似乎很慢。所以我尽量坚持使用 SQL。
【问题讨论】:
-
“我想要我想要我想要”。 SO 不是免费的编码服务,我们在这里帮助您解决代码中的问题。您必须尝试一下,发布您尝试过的内容,我们会告诉您哪里出错了。
-
我们尝试编写循环并在包括该网站在内的网络上搜索,我们意识到可能是在sql中无法进行索引的情况。至今失败。如果我们知道如何开始,如果我们确定有办法在 sql 中重新编码,我们将向您展示代码。那么有什么办法吗??
-
你不要在 SQL 中编写循环,你要编写连接或使用
GROUP BY。