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

标签 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

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

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

最佳答案

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

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

关于sql - 两个日期之间的平均差异(按第三个字段分组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14895782/

相关文章:

MySQL 5.6 错误 1054 : Unknown column in 'field list' on INSERT

sql - PostgreSQL:将查询返回应用于函数

MySQL统计最大行数

php - yii CActiveDataProvider 多表连接

mysql - SQL交叉连接中的重复对?

python - ODOO 10 多对多

mysql - SQL 错误 - 无法绑定(bind)多部分标识符 "CF.OBJ"

sql - 如何在 SQL Server 2005 开发版中只启用标准版功能?

php - MySQL查询: How to join multiple table with statment

java - 在 JPA/Hibernate 中使用 PK 作为 FK