2012-12-15 3 views
1

보고하려는 성능 데이터가 있습니다.각 성능 카운터마다 SQL 쿼리 아웃 주간 평균을 조정하십시오.

각 카운터의 매월 평균을 알려주는 출력이 필요합니다. (: 00 : 00.750 'ie'2012-01-01 00)

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 

내가 돈이로 필드를 재 배열

+0

1. 어떤 SQL 제품 및 어떤 버전을 사용하고 있습니까? 적절한 태그를 추가하십시오. 2. 쿼리의 열 참조에 테이블 별칭이 포함되어 있지 않습니다. 그러나 실제로 어떤 열이 어떤 테이블에 속하는지 알 수 있습니다. 3. 주간 평균을 원하는 열을 지정하는 것도 좋은 아이디어입니다. (나는 그것이 'CounterValue'라고 생각 하나, 왜 사람들을 추측하게 하는가?) 4. 그룹화 기준에 대해서도 동일하게 적용됩니다. * 전반적인 * 주당 평균을 원하십니까 또는'MachineName '으로 그룹화 하시겠습니까? 아니면 다른 무엇인가? –

+0

답장을 보내 주셔서 감사합니다. 떠나서 방금 돌아 왔습니다. 1.) SQL Server 2000 2.)는 wknd에 이것을 보냅니다. 3.) 각 성능 카운터에서 평균값을 얻으려는 경우이 값이 CounterValue 열입니다. 4.) 먼저 각 CounterValue에 대한 평균을 얻은 다음 MachineName으로 그룹화하십시오. 희망이 있으면 주말에 자세한 내용을 추가 할 수 있습니다. – user1133448

답변

0

응답에게 감사합니다 여기에

는 날짜/시간 필드를 사용하는 쿼리입니다 'T는 나에게 의미가 있지만, 당신이 뭔가이 시도 할 수 있습니다 : [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]에 인덱스를 만들 수 있습니다 및

+0

감사합니다. 방금 시도해 봤습니다. 돌아 가기 서버 : 메시지 241, 수준 16, 상태 1, 줄 1 datetime을 문자열에서 변환하는 중 구문 오류가 발생했습니다. – user1133448