Tsql 我如何获得一个月的日均工资?

Tsql 我如何获得一个月的日均工资?,tsql,average,common-table-expression,Tsql,Average,Common Table Expression,如何返回整个月的日平均值 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' 以上是我当前代码的一部分。我想得到四月份每天的人数。然后我想平均4月份的这些计数。例如,如果4月1日的计数为76

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

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'

以上是我当前代码的一部分。我想得到四月份每天的人数。然后我想平均4月份的这些计数。例如,如果4月1日的计数为764,4月2日的计数为763,那么我将求764和763之和=1527。同样,我会在四月份每天计算。最后,我将除以4月份的天数,得到我的日平均值。实现这一点最有效的TSQL是什么?是否有一个CTE可以用于此操作或其他标准SQL操作符?

您可能需要使用类似的东西

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

确保在求平均值时将cnt强制转换为浮点值,否则平均值将返回int而不是浮点值。
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
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