Sql server 选择每秒IIS方法调用的平均计数
我试图找出在一周的时间跨度内平均每秒IIS呼叫数(GET、POST、PUT等) 下面是一个用于获取一周总计数的选择示例:Sql server 选择每秒IIS方法调用的平均计数,sql-server,tsql,Sql Server,Tsql,我试图找出在一周的时间跨度内平均每秒IIS呼叫数(GET、POST、PUT等) 下面是一个用于获取一周总计数的选择示例: SELECT Method, COUNT(*) AS TotalCalls FROM IISLog WHERE dDate BETWEEN '2018-05-10' AND '2018-05-17' GROUP BY Method 如何使用此选择来获得此日期范围内每秒的平均方法调用计数 每秒呼叫的预期输出: Method
SELECT Method, COUNT(*)
AS TotalCalls
FROM IISLog
WHERE dDate
BETWEEN '2018-05-10'
AND '2018-05-17'
GROUP BY Method
如何使用此选择来获得此日期范围内每秒的平均方法调用计数
每秒呼叫的预期输出:
Method CallsPerSecond
Get 15
Put 10
Post 14
Delete 12
计数只是示例估计值只需除以构成筛选范围的秒数即可
DECLARE @StartDate DATETIME = '2018-05-10'
DECLARE @EndDate DATETIME = '2018-05-17'
SELECT
Method,
CallsPerSecond = COUNT(*) / NULLIF(DATEDIFF(SECOND, @StartDate, @EndDate), 0),
TotalCalls = COUNT(*)
FROM
IISLog AS I
WHERE
I.dDate BETWEEN @StartDate AND @EndDate
GROUP BY
I.Method
那么,你的问题到底是什么?你已经陈述了你的目标,很好,你已经提供了你的预期结果,也很好。你给我们的SQL也很好。但是,您还没有提出问题。另一方面,在'2018-05-10'和'2018-05-10'之间的
WHERE-dDate
子句与WHERE-dDate='2018-05-10'
(这将只返回时间正好为00:00.0000000
的行)相同。您在这里的中间声明的目标是什么?如果要返回当天任何时间出现的行,则将是,其中dDate>='20181005'和dDate<'20181006'
。(假设您的格式是yyyy-dd-MM
)@Larnu抱歉,Larnu,编辑后添加了问题并将结束日期更改为“2018-05-17”,您比我快了一步:然而,PI建议将@StartDate和@EndDate之间的I.dDate改为I.dDate>=@StartDate和I.dDate<@EndDate
,因为之间的将包括日期时间2018-05-17T00:00:00.000
(但从那一天起没有其他时间)。