Я пытаюсь вычислить диапазоны дат между строками и затем получить среднее значение.
declare @date0 date = (
select top 1 my_date
from someTable
order by my_date desc)
declare @date1 date = (
select my_date
from someTable
order by my_date desc
offset 1 rows
fetch next 1 row only)
declare @date2 date = (
select my_date
from someTable
order by my_date desc
offset 2 rows
fetch next 1 row only)
declare @date3 date = (
select my_date
from someTable
order by my_date desc
offset 3 rows
fetch next 1 row only)
select
[Range 1] = dateDiff(day, @date1, @date0),
[Range 2] = dateDiff(day, @date2, @date1),
[Range 3] = dateDiff(day, @date3, @date2),
[Avg Range] = avg(
nullIf(@date0, 0),
nullIf(@date1, 0),
nullIf(@date2, 0),
nullIf(@date3, 0)
)
Вычисления диапазонов работают нормально, но немного неуклюже.
Однако я не уверен, как справиться со средним. Похоже, что функция должна работать с таблицей, а не с массивом, но у меня возникли проблемы с вставкой переменных в столбец временной таблицы.
Как получить среднее из этих диапазонов (не включая range = 0
)