我有一个Windows事件日志导入到一个表中。该日志包含每个Web服务器请求和具有日期时间戳的响应的记录。通常,请求和响应记录彼此相邻,但偶尔会有2个请求,然后是2个响应。我想要一个查询来计算平均响应时间,即响应日期时间 - 请求日期时间。TSQL - 比较相邻行
回答
假设请求和响应将永远是彼此相邻,得到的答复,并加入到基于ID的请求+ 1:
SELECT l.ID, l.[date and time] AS [Response Date], l2.[date and time] AS [Request Date], DATEDIFF([date and time],l2.[date and time]) AS [Time] FROM logs AS l
JOIN logs AS l2 ON l.ID=l2.ID+1
WHERE l.request=0 AND l2.request=1
啊这是伟大的,谢谢你,如何处理这种情况的任何想法哪里有2个请求,然后2个响应?我试图找出如何以某种方式第一次“配对”请求与响应,然后做这样的事情 – goyo
也许在名为response_id的表中添加另一列,然后为该表创建一个触发器并让它的response_id等于last请求ID。 –
这只是一个评论太长时间才能适合它放置。
如果有送花儿给人在一段时间的请求,你可以很容易通过数字汇总所有请求次数,所有响应时间相加,只是减去第二ANS将第一计算时间的算术平均来响应的响应的请求(或响应)。
,因为既然你希望所有你不需要配对响应和请求的平均时间是可能的。
实施例:
T0 - Tf
-- --
1 - 11
2 - 12
3 - 13
T0和TF之间上述平均差异是相同的下面
T0 - Tf
-- --
2 - 11
1 - 12
3 - 13
所以下面的伪代码将工作
select
(
(
sum([date and time])
from [Mytable]
where is response
)
-
(
sum([date and time])
from [Mytable]
where is request
)
)
/
(
count (rows)
from [Mytable]
where is request
)
当然您可以希望删除重复项。 这可以很简单,因为如果所有重复请求都获得重复响应,请选择不同的[日期和时间]。 amore复杂的情况下,你可以使用行号来获得第一次发生。
无论如何,只是总结整个批处理算术中位数的窍门。
是的,这是一个好主意,但是对于我的需求,当我需要按周,小时,分钟等方式开始切片和划片响应时间时,它会变得非常复杂。感谢您花时间回复,非常OTB的解决方案 – goyo
- 1. 生成序列号比较TSQL中的相邻行
- 2. 比较单个文件中的相邻行与bash
- 3. TSQL - 案例日期比较
- 4. TSQL日期时间比较
- 5. 在Mathematica中比较相邻元素的“选择”
- 6. 比较2 excel列与相邻列中的数据
- 7. 没有发生树中相邻儿童的比较?
- 8. 序列中相邻元素之间的比较
- 9. 红宝石 - 比较相邻项的CSV文件
- 10. 比较所有相邻列在数据帧
- 11. 熊猫数据框:比较两个相邻行的值,并添加一列
- 12. 我可以比较PowerPivot中相邻行中同一列中的值吗?
- 13. 比较tsql中的两个int值
- 14. AWK - 比较两个文件 - 如果Field1相同,比较行
- 15. 比较/相交比较标准
- 16. Excel - SUMIF相邻行
- 17. 添加列,每个小区相邻的小区比较我是新手,还没有蟒蛇相邻列
- 18. 比较具有不同值的行中TSQL
- 19. 将列表中的元素与其邻居进行比较
- 20. Python - 将列表元素与“邻居”元素进行比较
- 21. InnoDB行大小与MyIsam相比较大
- 22. 比较时间和相应的行动
- 23. 比较excel中的相应行
- 24. SqlDataReader的执行TSQL比管理工作室执行TSQL
- 25. SQL配对相邻行
- 26. 比较的行
- 27. 比较两行
- 28. 比较行
- 29. Datatable比较行
- 30. 继承相等比较器
响应'ID'总是比相应的请求'ID'多一个吗?你有没有试图帮助我们? – HABO
sql-server2008或sql-sever2012?由于LEAD/TRAILING,这是几次与疯狂相关的情况之一。 –
的SQL Server 2014 – goyo