sql - 获取记录创建之间的平均时间

标签 sql sql-server tsql sql-server-2012

所以我有这样的数据:

UserID  CreateDate
1       10/20/2013 4:05
1       10/20/2013 4:10
1       10/21/2013 5:10
2       10/20/2012 4:03

我需要按每个用户分组以获得 CreateDates 之间的平均时间。我想要的结果是这样的:

UserID  AvgTime(minutes)
1       753.5
2       0

如何找到为用户分组返回的所有记录的 CreateDates 之间的差异?

编辑:

使用 SQL Server 2012

最佳答案

试试这个:

SELECT  A.UserID,
        AVG(CAST(DATEDIFF(MINUTE,B.CreateDate,A.CreateDate) AS FLOAT)) AvgTime
FROM #YourTable A
OUTER APPLY (SELECT TOP 1 *
             FROM #YourTable
             WHERE UserID = A.UserID
             AND CreateDate < A.CreateDate
             ORDER BY CreateDate DESC) B
GROUP BY A.UserID

关于sql - 获取记录创建之间的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501789/

相关文章:

sql - Rails Postgres 查询,仅选择出现在所有具有关联的搜索参数中的项目

sql - 哪里(隐式内部连接)与显式内部连接 ​​- 它会影响索引吗?

SQL - 选择要选择的重复值

c# - SQL Server 查询与 varbinary 类型列不匹配

c# - 在 Azure 虚拟机上创建并连接到 Entity Framework 数据库时出错

sql - 完全连接同一列上的多个表

sql - 来自 syncdb 的 Django 所有 SQL

sql-server - 触发器插入不适用于 insert..select from 语句

sql - 整理声明的 SQL 变量

sql - 此 OUTPUT 语句 (SQL Server 2005) 的语法有什么问题?