我如何获得一个月的日均值?

问题描述:

如何返回整个月份的日均值?我如何获得一个月的日均值?

select count(distinct people_id) 
from #enrollments_PreviousMonth 
where program_modifier_id = 'E1AA7A36-0500-4BAE-A0AA-D9E0BC91A6F3' 
AND actual_date between '4/1/13' and '5/1/13' 

上面是我当前代码的一部分。我想在四月份的每一天获得明显的people_id数。那么我想要将这些数字计算在四月份。例如,如果4月1日的计数为764,4月2日的计数为763,那么我将总计764和763 = 1527。同样,我会在4月的每一天进行总计。最后,我会用四月的天数除以得到我的日常平均值。什么是最有效的TSQL来完成这一点?有没有可以用于这个或其他标准SQL运算符的CTE?

你可能想使用这样的

SELECT round(Cast(count(people_id)as float)/Cast(DateDiff(day, '4/1/13', '4/6/13')as float), 2) as average 
    FROM #enrollments_PreviousMonth 
    WHERE program_modifier_id = 'E1AA7A36-0500-4BAE-A0AA-D9E0BC91A6F3' 
     AND actual_date between '4/1/13' and '5/1/13' 
    GROUP BY people_id 

WITH list AS (
select actual_date,count(distinct people_id) cnt 
from #enrollments_PreviousMonth 
where program_modifier_id = 'E1AA7A36-0500-4BAE-A0AA-D9E0BC91A6F3' 
AND actual_date between '4/1/13' and '5/1/13' 
GROUP BY actual_date) 
SELECT AVG(cnt) FROM list 
+0

确保你施放CNT平均或平均会返回一个int,而不是一个浮动时,浮动。 – 2013-05-10 17:15:09

SELECT AVG(CONVERT(FLOAT, distinctPeopleByDate)) 
FROM 
(
    select actual_date, count(distinct people_id) as distinctPeopleByDate 
    from #enrollments_PreviousMonth 
    where program_modifier_id = 'E1AA7A36-0500-4BAE-A0AA-D9E0BC91A6F3' 
    and actual_date between '4/1/13' and '5/1/13' 
    group by actual_date 
) x