@pqgg7nwkd4

Как получить id предыдущей записи в выборке, которая удовлетворяла условию?

Конструктивно.
CREATE TABLE foo (id int, grp bool);
INSERT INTO foo VALUES (1, false), (2, true), (3, false), (4, false), (5, true), (6, false), (7, false), (8, false);

grp - это некое условие.
Получаем такую выборку:
SELECT * FROM foo ORDER BY id;
id	grp
1	false
2	true
3	false
4	false
5	true
6	false
7	false
8	false

И нужно получить grp_id ⸺ id предыдущей записи, где grp=true:
id	grp	grp_id
1	false	null
2	true	2
3	false	2
4	false	2
5	true	5
6	false	5
7	false	5
8	false	5

Песочница: https://www.db-fiddle.com/f/cntG2o6N4CXsYxnkrVEAnY/0
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
@pqgg7nwkd4 Автор вопроса
https://www.db-fiddle.com/f/cntG2o6N4CXsYxnkrVEAnY/1
Нарастающий максимум
SELECT *,
    max(id) filter ( where grp ) OVER (ORDER BY id) as grp_id
FROM foo
ORDER BY id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы