2014-05-15 5 views
1

EvntFct 테이블의 레코드 수를 계산 한 사람 수를 알고 싶습니다.날짜 범위의 평균 계산

이것은 하루 동안의 카운트를 제공합니다 - 4 월 1 일. 내 SQl 서버로 Teradata를 사용하고 있습니다.

하지만 어제까지 일일 평균을 어떻게 계산합니까? 당신은 카운트의 평균을 계산하려는처럼

SELECT CAST(EVENT_TIMESTAMP AS DATE) theDate, 
       COUNT(DISTINCT USER_ID) 
FROM EventFct 
WHERE CAST(EVENT_TIMESTAMP AS DATE) >'2014-05-10' 
GROUP BY theDate 
ORDER BY theDate 
+0

SQL의 집계 함수를 살펴 보았습니까? 하위 쿼리가있는 집계가 트릭을 수행 할 수 있습니다. –

+0

전 누군가가 저를 전에 언급 해주었습니다. 내가 한번 보자. –

답변

3

가 보인다, 이것은 중첩 된 집합입니다. 파생 테이블 사용하는 당신이 이것을 달성하기 위해이 각 날짜 행을 제거 물론

SELECT avg(cnt) 
FROM 
(
    SELECT CAST(EVENT_TIMESTAMP AS DATE) theDate, 
      COUNT(DISTINCT USER_ID) as cnt 
    FROM EventFct 
    WHERE CAST(EVENT_TIMESTAMP AS DATE) >'2014-05-10' 
    GROUP BY theDate 
) as dt 

을, 당신은 그 행을 유지하고 윈도우 된 집계 기능을 사용하여 추가 열로 평균을 추가 할 수 있습니다 :

SELECT CAST(EVENT_TIMESTAMP AS DATE) theDate, 
     COUNT(DISTINCT USER_ID) as cnt, 
     AVG(cnt) OVER() as avgcnt 
FROM EventFct 
WHERE CAST(EVENT_TIMESTAMP AS DATE) >'2014-05-10' 
GROUP BY theDate 
+0

@dnoeth. (다시) 감사. 나는 맹세한다, 나는 당신의 대답에 따라 중첩 테이블을 사용하여 그것을 알아 냈다! –

1
SELECT AVG(COUNT(*)) 
FROM EventFct 
WHERE CAST(EVENT_TIMESTAMP AS DATE) > '2014-05-10' 
GROUP BY USER_ID, CAST(EVENT_TIMESTAMP AS DATE)