У меня есть таблица, которая действует как журнал сообщений, с двумя таблицами ключей: TIMESTAMP
и TEXT
.Я работаю над запросом, который захватывает все оповещения (от TEXT
) за последние 30 дней (на основе TIMESTAMP
) и выдает среднесуточное значение для этих оповещений.
Вот запрос на данный момент:
--goback 30 days start at midnight
declare @olderdate as datetime
set @olderdate = DATEADD(Day, -30, DATEDIFF(Day, 0, GetDate()))
--today at 11:59pm
declare @today as datetime
set @today = dateadd(ms, -3, (dateadd(day, +1, convert(varchar, GETDATE(), 101))))
print @today
--Grab average alerts per day over 30 days
select
avg(x.Alerts * 1.0 / 30)
from
(select count(*) as Alerts
from MESSAGE_LOG
where text like 'The process%'
and text like '%has alerted%'
and TIMESTAMP between @olderdate and @today) X
Однако я хочу добавить что-то, что проверяет, были ли какие-либо оповещения за день и, если нет оповещений за этот день,не включает это в среднем.Например, если в месяц имеется 90 оповещений, но все они в один день, я бы не хотел, чтобы среднее число оповещений составляло 3 оповещения в день, поскольку это явно вводит в заблуждение.
Есть ли способ включить это в мой запрос?Я искал другие решения для этого, но не смог заставить их работать.