【问题标题】:How to write a query to get number of queries per minute in a database which is fed with the log files如何编写查询以获取日志文件提供的数据库中每分钟的查询数
【发布时间】:2026-01-25 10:10:01
【问题描述】:

表(日志分析器)结构是:


我想绘制一个显示每分钟请求数的折线图。我想编写一个显示两列的查询,其中包含以下信息:

  1. 日期:时:分
  2. 请求数

我尝试编写一个显示每小时请求的示例查询:

SELECT ( Str(Datepart(HOUR, TimeLog)) + '.00' ) AS 'From (hours)',
       ( Str(CASE
               WHEN Datepart(HOUR, TimeLog) + 1 = 24 THEN 00
               ELSE Datepart(HOUR, TimeLog) + 1
             END) + '.00' )AS 'To (hours)',
       Count(DISTINCT Request) AS 'Number Of Queries '
FROM   LogData
GROUP  BY Datepart(HOUR, TimeLog);

问题在于,当我使用 MINUTE 而不是 HOUR 时,它结合了 所有小时和天,所以它只显示 60 行。我希望根据日期和时间将所有行分开。如何实现?

【问题讨论】:

    标签: sql sql-server-2008 reporting-services


    【解决方案1】:
    select  convert(nvarchar(16), TimeLog, 120) requestTime,
            count(*)
    from    LogData
    group by convert(nvarchar(16), TimeLog, 120)`
    

    【讨论】:

    • 嗨,我想创建一个类似于上面的查询,但它应该每 15 分钟显示一次会话数。并且 group by 子句将保持不变(即每分钟) 例如:在 10:00:00 它应该代表过去 15 分钟到 10:00:00 的会话数(sessionID),即:9:45:00到 10:00:00 等等...
    • 这是不同的东西。我希望我的输出是 ---------> Time:2012-06-06 10:00:00 , No Of Sessions: 123(Random) ; Time:2012-06-06 10:00:01 , No Of Sessions: 212(Random) 其中 123 应该是最后 15 分钟到 10:00 的会话数,即从 09:45 到 10:00 和 212 应该是过去 15 分钟到 10:01 的会话数,即从 09:46 到 10:01