2012-12-19 2 views
2

안녕하세요 결과 집합의 평균을 계산하려고하지만 나는 할 수 없습니다 그래서 count (*)를 선택하는 쿼리는 1과 1 월 31 일에 거의 20 개의 행이 반환됩니다. 어떻게 결과의 평균을 계산하고 SET @abc = (아래 쿼리)와 같은 변수에 값을 할당해야합니까? SQL Server 2005를 사용하고 있습니다.여러 행을 반환하는 카운트 (*)의 평균을 찾기

SELECT avg(Calls) AS average 
FROM 
(
    SELECT COUNT(*) Calls  
    FROM abc 
    WHERE CallDate BETWEEN '20120101' AND '20120131' 
    AND datepart(Hh,TranscribeDateTime) = '07' 
    AND datepart(Mi,TranscribeDateTime) BETWEEN '00' AND '59' 
    AND AppID = 123 AND Status ='T' 
    GROUP BY calldate 
) 

내 접근 방식이 잘못되면 제안 해주십시오. 그냥 (SQL 서버 필요) 파생 테이블에 대한 테이블 별칭과 할당 문을 (당신이 변수에 할당하는 경우 또한 열 AS average 별칭을 수 없습니다) 누락과 같은

+3

접근 방식이 괜찮아 보입니다. 너의 문제는 무엇인가? 실패 했습니까? 예기치 않은 결과가 나옵니까? –

+0

SQL Server는 정수의 평균을 부동 소수점 대신 정수로 계산합니다. 'avg (cast (Calls as float))'를 원할 수 있습니다. –

답변

6

이 보이는 감사

DECLARE @ABC INT; 

SELECT @ABC = AVG(Calls) 
FROM 
(
    SELECT COUNT(*) Calls  
    FROM abc 
    WHERE CallDate BETWEEN '20120101' AND '20120131' 
    AND datepart(Hh,TranscribeDateTime) = '07' 
    AND datepart(Mi,TranscribeDateTime) BETWEEN '00' AND '59' 
    AND AppID = 123 AND Status ='T' 
    GROUP BY calldate 
) T /* <-- Alias here */ 
+2

좋은 캐치! 단일 문자 수정. –

+0

고마워, 네. –

관련 문제