我们目前有一个表格,通过我们的服务记录流量。我们正在寻找一种方法来根据流量进行一些诊断/警报,但发现在凌晨 2 点我们没有足够的流量来可靠(凌晨 2 点失败可能是 50% 的故障率,但在上午 9 点当人们努力工作时,1 次失败可能是 0.01%)。
我们想通过服务器检查最后 10 分钟,如果最后 10 分钟没有 300 条记录,我们想返回,直到我们有 300 条记录。
有没有办法在查询中做到这一点?
我们的表格如下所示:
ID INT,
ServerID INT,
Success BIT,
ActionDate DATETIME
我可以ROW_NUMBER()
用来获取最后 300 分钟,但如果流量足够高以至于这不是最后 10 分钟的完整时间,我们就会丢失可能相关的数据。
我正在寻找按照以下方式做的事情
SET _RowCount = SELECT COUNT(*) FROM tbl WHERE Date >= DATEADD(M, -10, GETDATE());
IF _RowCount < 300 SET @RowCount = 300;
SELECT TOP _RowCount records
但似乎不能使用变量作为 TOP 计数。