【发布时间】:2015-07-08 20:08:48
【问题描述】:
我正在尝试进行一个查询,该查询返回天数的差异,以获取一段时间内的平均天数。这是我需要从请求中获取状态 2 的最大日期和状态 3 的最大日期并获取用户在该时间段上花费的时间的情况
到目前为止,这是我现在的查询,我得到了 mas 和 min 以及天之间的差异,但不是状态 2 的最大值和状态 3 的最大值
到目前为止我的查询:
SELECT distinct t1.user, t1.Request,
Min(t1.Time) as MinDate,
Max(t1.Time) as MaxDate,
DATEDIFF(day, MIN(t1.Time), MAX(t1.Time))
FROM [Hst_Log] t1
where t1.Request = 146800
GROUP BY t1.Request, t1.user
ORDER BY t1.user, max(t1.Time) desc
示例表:
-------------------------------
user | Request | Status | Time
-------------------------------
User 1 | 2 | 1 | 6/1/15 3:25 PM
User 2 | 1 | 1 | 2/1/15 3:24 PM
User 2 | 3 | 1 | 2/1/15 3:24 PM
User 1 | 4 | 1 | 5/10/15 3:18 PM
User 3 | 3 | 2 | 5/4/15 2:36 PM
User 2 | 2 | 2 | 6/4/15 2:34 PM
User 3 | 2 | 3 | 6/10/15 5:51 PM
User 1 | 1 | 2 | 5/1/15 5:49 PM
User 3 | 4 | 2 | 5/16/15 2:39 PM
User 2 | 4 | 2 | 5/17/15 2:32 PM
User 2 | 3 | 2 | 4/6/15 2:22 PM
User 2 | 3 | 3 | 4/7/15 2:06 PM
-------------------------------
感谢所有帮助
【问题讨论】:
-
我通常不会将 DISTINCT 与 GROUP BY 一起使用。取出 DISTINCT 会发生什么?
-
@TheTTGGuy 因为
GROUP BY,就其本质而言,是一个DISTINCT,它不会做任何事情。 -
使用您的样本数据,输出会是什么?据我所知,只有一次用户在同一请求中同时具有状态 2 和 3。
-
谢谢,你可以使用 1 和 2
-
status需要从status一个status计算到下一个status但是1和2可以工作
标签: sql sql-server max average datediff