获取每个用户特定时间段的活动持续时间

时间:2017-05-25 16:09:20

标签: php mysql wordpress

这是我的表的一个例子。对于给定的drop,我在多行上有多个条目(这是帖子的元数据)。

post_id

我想要完成的任务:

我希望从数据库中获取这些结果,以创建一个表格,显示每月为每个用户(post_id | meta_key | meta_value ________ ________________ ____________________ | | 1 | _theDate | 2016-03-31 12:03:59 1 | _email | the@email.com 1 | _EventDuration | 32400 2 | _theDate | 2016-01-06 14:50:22 2 | _email | the@email.com 2 | _EventDuration | 32400 3 | _theDate | 2017-02-14 15:32:52 3 | _email | other@user.net 3 | _EventDuration | 32400 4 | _theDate | 2016-10-01 22:45:55 4 | _email | the@email.com 4 | _EventDuration | 32400 5 | _theDate | 2016-09-25 11:01:39 5 | _email | other@user.net 5 | _EventDuration | 32400 6 | _theDate | 2015-11-19 19:08:45 6 | _email | other@user.net 6 | _EventDuration | 32400 )工作的小时数(_EventDuration)(使用_email例如,_theDate)表示每个事件(2015-11)。我可以在我的最后使用PHP变量来做到这一点。

因此,我可以通过以下方式制作HTML表格以显示此信息(我正在寻找此部分的答案,例如将秒数转换为小时,这纯粹就是这样你知道我想要用表格中的所有数据完成什么:

post_id

我目前所拥有的只是这个请求,用于计算用户在2017年完成的事件数量,例如:

Hours the@email.com worked in 2015-11
Date            Hours
2015-11-01      9
2015-11-13      7
2015-11-27      5
2015-11-30      8

Hours the@email.com worked in 2015-12
Date            Hours
2015-12-01      10
2015-12-13      7
2015-12-27      3
2015-12-30      6

1 个答案:

答案 0 :(得分:2)

您可以使用子查询来旋转表格,以便将电子邮件,日期和小时数分配到每个帖子的不同列中。然后,您可以使用常规分组查询来获取每日总数和用户数。

SELECT Email, Date, SUM(Hours) AS Hours
FROM (
    SELECT MAX(IF(meta_key = '_email', meta_value, NULL)) AS Email,
           MAX(IF(meta_key = '_theDate', DATE(meta_value), NULL)) AS Date, 
           SUM(IF(meta_key = '_EventDuration', meta_value, 0))/3600 AS Hours
    FROM metatable
    GROUP BY post_id
) AS x
GROUP BY Email, Date
ORDER BY Email, Date