两个日期之间的平均差异,按第三个字段分组?

时间:2013-02-15 13:24:45

标签: sql

所以说我们有3个字段,username, start_date, end_date

用户启动和停止多条记录,例如,在bob已启动和停止两条记录之下。

bob   1/2/13 11:00  1/2/13 13:00
jack  1/2/13 15:00  1/2/13 18:00
bob   2/2/13 14:00  1/2/13 19:00

我需要知道每个用户所花费的平均时间(即开始和结束之间的差异),以小时为单位(即按用户分组,而不仅仅是每行)。

我不能完全理解如何做差异,平均AND组?有什么帮助吗?

2 个答案:

答案 0 :(得分:12)

您没有为diff指定所需的粒度。这可以在几天内完成:

select username, avg(end_date - start_date) as avg_days
from mytable
group by username

如果您想要以秒为单位的差异,请使用datediff()

select username, avg(datediff(ss, start_date, end_date)) as avg_seconds
...

datediff可以通过改变第一个参数(可以是ss,mi,hh,dd,wk,mm或yy),以任意时间单位测量差异达到几年。

答案 1 :(得分:4)

SELECT username, AVG(TIMESTAMPDIFF(HOUR, start_date, end_date))
FROM table
GROUP BY username