Количество дней известно и равно DATEDIFF(day,CONVERT(DATETIME,'2009.01.01',120),CONVERT(DATETIME,'2009.09.01',120))
.
Вы должны рассчитать сумму и разделить ее на количество дней в выбранном диапазоне:
SELECT
DATEPART(hh, VisitDate),
CAST(COUNT(*) AS FLOAT) / DATEDIFF(day,CONVERT(DATETIME,'2009.01.01',120),CONVERT(DATETIME,'2009.09.01',120))
FROM CustomerLog
WHERE
(VisitDate >= CONVERT(DATETIME,'2009.01.01',120)) AND
(VisitDate < CONVERT(DATETIME,'2009.09.01',120))
GROUP BY DATEPART(hh, VisitDate)
CAST(COUNT(*) AS FLOAT)
, чтобы получить более точный результат, но вы можете оставить только COUNT(*)
и получить целочисленный результат.
Если вы используете параметры, это будет:
SELECT
DATEPART(hh, VisitDate),
CAST(COUNT(*) AS FLOAT) / DATEDIFF(day,@beginningDate,@endDate)
FROM CustomerLog
WHERE
(VisitDate >= @beginningDate) AND
(VisitDate < @endDate)
GROUP BY DATEPART(hh, VisitDate)
Если вы хотите результаты за январь, вы должны использовать @beginningDate = '2009.01.01', @endDate = '2009.02.01'.