Я пытаюсь использовать оконные функции, чтобы получить самые последние n записей, после отсюда :
У меня есть:
select
id,
blah,
row_number () over (
partition by blah, my_id
order by datetime) rn,
theme
from documents
where theme = 'cats';
И я получаю :
id | blah | rn | theme
----+-----+----+-------
1 | 1 | 1 | cats
2 | 1 | 2 | cats
3 | 1 | 3 | cats
4 | 1 | 4 | cats
5 | 1 | 5 | cats
9 | 2 | 1 | cats
8 | 2 | 2 | cats
11 | 3 | 1 | cats
12 | 4 | 1 | cats
13 | 5 | 1 | cats
14 | 6 | 1 | cats
(11 rows)
Что здорово. Но я хочу не более 2 строк, например rn <= 2
. Я представляю это как что-то вроде:
select
id,
blah,
row_number () over (
partition by blah, my_id
order by datetime) rn,
theme
from documents
where theme = 'cats' and
rn <= 2;
но я получаю:
ERROR: column "rn" does not exist
LINE 15: rn <= 1;
^
Я знаю, что могу сделать это подзапросом, как связанный вопрос, но должен быть синтаксис. отсутствует для помещения row_number в предложении where, верно? Что это?