2

如何返回整个月的日平均值?

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?

4

3 回答 3

0

你可能想使用这样的东西

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
于 2013-05-10T17:01:14.853 回答
0
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
于 2013-05-10T17:09:55.623 回答
0
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
于 2013-05-10T17:06:32.780 回答