在下面的示例MySQL数据库中,我想分析这些数据,但我的SQL技能让我失望。
=========================================
activity_type email activity_date
email_sent a@mail.com 2013-12-01
email_sent b@mail.com 2013-12-01
email_sent c@mail.com 2013-12-01
email_click a@mail.com 2013-12-04
email_click b@mail.com 2013-12-05
email_reply a@mail.com 2013-12-07
=========================================
使用SQL,您如何计算点击电子邮件所需的平均时间长度? (答案是3.5天。只点击了电子邮件 和 b ,点击了3和4几天后,分别。)
您的SQL查询是否也允许我们计算回复电子邮件所需的平均时间,即使只有这种情况发生?
提前感谢帮助超级n00b。
答案 0 :(得分:4)
SELECT avg(datediff(t2.activity_date, t1.activity_date))
FROM table t1
JOIN table t2 ON t1.email = t2.email
WHERE t1.activity_type = 'email_sent'
AND t2.activity_type = 'email_click'
要计算回复时间,只需更改相关的t2.activity_type
字段。
答案 1 :(得分:0)
首先,您必须将已发送事件的行加入已点击事件的行。然后计算日期之间的差异,然后计算平均值。
SELECT AVG(e2.activity_date - e.activity_date) avg_gap
FROM email e
JOIN email e2 on (e.email = e2.email)
WHERE e.activity_type= 'email_sent'
AND e2.activity_type= 'email_click'