Итак, у меня есть таблица собраний и участников этих собраний:
id | callid | participants | date
----+--------+--------------+------------
1 | 1 | {1,2} | 2020-05-30
2 | 2 | {1,2} | 2020-05-01
3 | 3 | {3,4} | 2020-03-10
Я создал следующий запрос, чтобы изолировать reviewer_id и даты их собрания:
select *
from (select r.id as reviewer_id, m.date as meeting_date
from researcher r, meeting m
where r.id = any (m.participants)
order by r.id) u;
который дает таблицу:
reviewer_id | meeting_date
-------------+--------------
1 | 2020-05-30
1 | 2020-05-01
2 | 2020-05-30
2 | 2020-05-01
3 | 2020-03-10
4 | 2020-03-10
Теперь это та часть, где я застрял. Как я могу использовать это, чтобы определить, посещает ли рецензент более одной встречи в течение двух дней подряд?
Я пытался использовать функцию PostgreSQL datediff()
:
select u.reviewer_id, u.meeting_date, date_part('day', u.meeting_date - row_number() over(order by u.meeting_date))
from (select r.id as reviewer_id, m.date as meeting_date
from researcher r, meeting m
where r.id = any (m.participants)
order by r.id) u;
, но он продолжает говорить:
operator does not exist: date - bigint
Если кто-то может помочь, это будет высоко ценится.