10

所以说我们有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

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

我无法完全理解如何进行差异、平均和分组?有什么帮助吗?

4

2 回答 2

17

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

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)来测量任何时间单位(最长为年)的差异。

于 2013-02-15T13:27:10.510 回答
5
SELECT [username], AVG(TIMESTAMPDIFF(HOUR, start_date, end_date))
FROM [table]
GROUP BY [username]
于 2013-02-15T13:28:02.257 回答