Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调优SQL查询输出每个性能计数器的每周平均值_Sql_Sql Server 2000 - Fatal编程技术网

调优SQL查询输出每个性能计数器的每周平均值

调优SQL查询输出每个性能计数器的每周平均值,sql,sql-server-2000,Sql,Sql Server 2000,我有一些性能数据要报告 我需要的输出给我的每个计数器每月每周的平均值 以下是使用日期/时间字段的查询,即“2012-01-01 00:00:00.750” SELECT MachineName , CounterName , InstanceName, CounterValue, ObjectName, CounterDateTime FROM dbo.CounterDetails cdt

我有一些性能数据要报告

我需要的输出给我的每个计数器每月每周的平均值

以下是使用日期/时间字段的查询,即“2012-01-01 00:00:00.750”

SELECT MachineName ,
        CounterName ,
        InstanceName, 
        CounterValue,
        ObjectName,
        CounterDateTime 
FROM    dbo.CounterDetails cdt

        INNER JOIN dbo.CounterData cd ON cdt.CounterID = cd.CounterID
        INNER JOIN DisplayToID d ON d.GUID = cd.GUID

WHERE   MachineName = '\\SERVER1'

AND CounterDateTime BETWEEN '2012-01-01 00:00:00.750' AND '2012-01-31 23:59:00.750'
GROUP BY ObjectName, CounterName, InstanceName, CounterValue, CounterDateTime, MachineName
ORDER BY CounterDateTime

感谢回复

我重新排列了您的字段,因为这对我来说没有意义,但您可以尝试以下内容:

SELECT  MachineName
        , ObjectName
        , InstanceName
        , CounterName
        , DATEPART( YEAR, CounterDateTime ) As YearNo
        , DATEPART( MONTH, CounterDateTime ) As MonthNo
        , DATEPART( WEEK, CounterDateTime ) AS WeekNo
        , AVG(CounterValue) AS avgCounterValue
FROM    dbo.CounterDetails cdt
        INNER JOIN dbo.CounterData cd
            ON cdt.CounterID = cd.CounterID
        INNER JOIN DisplayToID d
            ON d.GUID = cd.GUID
WHERE       MachineName = '\\SERVER1'
            AND CounterDateTime BETWEEN '2012-01-01 00:00:00.750' AND '2012-01-31 23:59:00.750'
GROUP BY    MachineName, ObjectName, InstanceName, CounterName
            , DATEPART( YEAR, CounterDateTime )
            , DATEPART( MONTH, CounterDateTime )
            , DATEPART( WEEK, CounterDateTime )
ORDER BY    MachineName, ObjectName, InstanceName, CounterName
            , DATEPART( YEAR, CounterDateTime )
            , DATEPART( MONTH, CounterDateTime )
            , DATEPART( WEEK, CounterDateTime )

如果表很大,可能需要在[MachineName]和[CounterDateTime]上创建索引。

1。您使用的是什么SQL产品及其版本?请添加相应的标签。2.查询中的列引用不包括表别名。但是,了解哪些列属于哪个表可能确实有帮助。3.另外,最好指定每周平均值所在的列。我确实认为这是反价值,但为什么要让人们猜测呢?4.分组标准也是如此。您希望每周的总体平均值还是按MachineName分组?还是别的原因?谢谢你的回复,我走了,刚回来。1.SQL Server 2000.2将在wknd上发送此消息。3.查看每个性能计数器的平均值,这是计数器值列。4.首先寻找每个计数器值的平均值,然后按MachineName分组。希望这有帮助,将在周末增加更多细节。谢谢,只是尝试一下。返回服务器:Msg 241,级别16,状态1,第1行从字符串转换日期时间语法错误。