2

1 か月全体の毎日の平均を返すにはどうすればよいですか?

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 月の各日の people_id の個別のカウントを取得したいと考えています。次に、4 月のこれらの数を平均したいと思います。たとえば、カウントが 4 月 1 日に 764 で、4 月 2 日に 763 だった場合、764 と 763 = 1527 を合計します。同様に、4 月は毎日合計します。最後に、4 月の日数で割り、1 日の平均を求めます。これを達成するための最も効率的な 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
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 に答える
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 に答える