我有一个表,它基本上将关键活动记录到某些记录。这些关键活动是创建,存档和取消存档,基本上可能看起来有点像这样的'创建'和'存档'和' Unarchive'和'存档'该对象是“活跃的”。
id | object_id | Object | action | log_date
-------------------------------------------------------
1 | 1 | Obj | Create | 2016-02-05
2 | 2 | Obj | Create | 2016-02-07
3 | 3 | Obj | Create | 2016-02-08
4 | 1 | Obj | Archived | 2016-02-27
5 | 2 | Obj | Archived | 2016-02-15
6 | 2 | Obj | UnArchive | 2016-02-25
7 | 3 | Obj | Archived | 2016-03-10
我需要做的是能够说在2016年3月1日,有2个物体活跃,它们平均活动了21.3天(物体3活跃了20天,物体2作为2016-03-01领先平均值21.3)重新激活3天。
编辑: 因此,将使用的数据集如下:
id | object_id | Object | action | log_date
---------------------------------------------------
3 | 3 | Obj | Create | 2016-02-08
6 | 2 | Obj | UnArchived | 2016-02-25
记录ID 3,对象3,因为它是在3月1日之前创建的。并且还没有在那时归档,并且记录了id 6对象id 2,因为它在3月之前已经被归档了。我对每个对象的活动总时间不是很感兴趣,只是基于其最后一次创建的时间活动。或者' unarchive'事件
然后,我需要能够在任何给定的日期范围内每月1次执行此操作。
我的第一个攻击是尝试隔离符合要求的记录
select object_id from log l
where object = 'Obj'
AND object_id in (SELECT object_id from log where object = 'Obj' and `action`='Create' and log_date <= '2016-10-01')
and object_id not in (select object_id from log where object = 'Obj' and `action`='Archive' group by object_id having max(log_date) < '2016-10-01')
group by object_id
我怎么能不确定从哪里可以离开这里。
任何帮助都将不胜感激。