У меня есть представление, которое усредняет некоторую статистику, усредняя последние строки относительно
к текущему внешнему ряду. Подумайте о среднем уровне за каждый предыдущий битой для каждого теста. Это работает, как я хотел бы, но я хотел бы больше контроля над old_foo.dates
Запрос идеализированных представлений выглядит так:
create view myview as
select
avg(old_foo.stuff),
foo.person_id,
foo.date_ as this_date
from
foo,
join ( select stuff, person_id, date_ from foo) as old_foo
on old_foo.date_ < foo.date_
group by person_id, this_date
;
Но то, что я действительно хотел бы, - это установить минимальную old_foo.date из
чтобы я мог создавать произвольные скользящие средние на лету .
Например:
select * from myview where mindate > now()::date - 10
(Ментат вымышлен, поскольку я теряю его вместе с группой)
Я знаю, что могу сделать это с помощью функции, но я бы предпочел не слишком. Могут ли CTE дать мне больше гибкости с тем, что я хочу?
редактировать
Я не могу вывести столбец oldate на верхний уровень представления, не сгруппировав его (а это не то, что мне нужно). Я хочу, чтобы представление было общим, чтобы я мог так же легко сделать 10-дневную скользящую среднюю, как 20 день или любое другое свидание, которое мне бы хотелось. Старые даты во внутреннем запросе, поэтому у меня нет доступа к нему после создания представления.