2012-07-10 3 views
0

활성 고객의 수를 가져와 고객이 활동 한 총 일수를 찾는 쿼리가 있습니다.이 열의 평균을 찾고 싶습니다. ..SQL 쿼리의 결과 열 평균을 계산하는 방법

이와 같은 쿼리에서 평균을 가져 와서 한 줄에 표시 할 수 있습니까? 또는보고면에서이 작업을 수행해야합니까? 현재 검색어 :

SELECT   
    dtCreated, bActive, dtLastUpdated, dtLastVisit, 
    DATEDIFF(d, dtCreated, dtLastUpdated) AS Difference 
FROM 
    Customers 
WHERE   
    (bActive = 'true') 
    AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-01 00:00:00', 102)) 

감사합니다.

+0

평균 (열) 쿼리의 결과 집합에 –

+0

모든 행이 동일한 행 수있다. 세 가지 선택이 있습니다 : (1) 응용 프로그램에서 이것을하십시오; (2) 평균 열을 모든 행에 추가합니다. (3) 별도의 쿼리에서 평균을 계산합니다. –

+0

나는 게시물에 앞서 평균 (차이)을 더하려고했지만 "평균값은 함수에 내장 된 것으로 인식되지 않는다"고 말했습니다. – Shmewnix

답변

4

사용 AVG는 : http://msdn.microsoft.com/en-us/library/ms177677

SELECT   
    dtCreated, bActive, dtLastUpdated, dtLastVisit, 
    DATEDIFF(d, dtCreated, dtLastUpdated) AS Difference, 
    AVG(DATEDIFF(d, dtCreated, dtLastUpdated)) OVER() AS AvgDifference 
FROM 
    Customers 
WHERE   
    (bActive = 'true') 
    AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-01 00:00:00', 102)) 

) (OVER 사용하도록 업데이트 : http://msdn.microsoft.com/en-us/library/ms189461.aspx

+0

"AVG"를 사용하면 열 이름이 잘못되었습니다. 문제는 "차이"열 및 평균 열을 원하지만 평균은 1 출력이어야합니다. – Shmewnix

+0

그래서 모든 행에서 평균 차이를 반환하는 추가 열을 원하십니까? Erica가 OVER 절과 함께 제안한 바를 수행하십시오. AVG (DATEDIFF (d, dtCreated, dtLastUpdated)) OVER() –

+0

@JustinSwartsel 훨씬 더 의미가 있습니다. – Erica

관련 문제