一尘不染

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

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

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

我不太了解如何进行差异,平均和分组?有什么帮助吗?


阅读 119

收藏
2021-03-10

共1个答案

一尘不染

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

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)以任何时间单位测量长达数年的差异。

2021-03-10