Найти конкретные данные в течение 365 дней

У меня есть таблица, в которой есть различные исторические данные о том, где определенные люди работали и жили в течение 50 лет. Для упрощения каждая запись имеет дату, person_id, address_id и логическую работу true или false и второе логическое место жительства true или false. Данные достаточно спорадичны, поэтому совпадений немного. Человек мог бы жить на своем рабочем месте, хотя это может быть проигнорировано для целей данного вопроса.

Я хочу найти каждый случай, когда есть рабочий адрес и адрес проживания в течение одного года для человека. Конечно, за 50 лет человек мог сменить работу и место жительства.

Резюме информации можно посмотреть по адресу: https://secure-shore-68966.herokuapp.com/connections .

Программа Rails на https://bitbucket.org/MtnBiker/crores5/

Есть ли способ сделать это с помощью SQL/Active Record? Я могу видеть повторение каждой записи и поиск любых событий с плюсом или минусом шести месяцев каждой записи для этого человека. Но я надеюсь на SQL путь. Я хочу провести линию на карте между каждой парой.

Таблица:

CREATE TABLE public.years
(
id integer NOT NULL DEFAULT nextval('years_id_seq'::regclass),
year_date date,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
resto boolean,
resid boolean,
source text,
person_id integer,
location_id integer,
title character varying,
notes text,
resto_name character varying,
ref_link character varying,
ref_url character varying,
snippet_file_name character varying,
snippet_content_type character varying,
snippet_file_size integer,
snippet_updated_at timestamp without time zone,
CONSTRAINT years_pkey PRIMARY KEY (id),
CONSTRAINT fk_rails_8fc1813509 FOREIGN KEY (person_id)
REFERENCES public.people (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_rails_e1624dbb3f FOREIGN KEY (location_id)
REFERENCES public.locations (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)

Так для любой person_idзаписи, если residtrueесть есть resto trueв течение плюс или минус шесть месяцев (year_date).

1 ответ

  1. От даты для элемента. Если бы я повторил, я бы посмотрел на дату этой строки и для этого человека найти, если у них были какие-либо записи в течение шести месяцев. С добавленной оговоркой, что если элемент был изменен true + — шесть месяцев было resto true.