Есть СУБД postgresql, есть табличка с полями времени, имени пользователя, типа пользователя и гео.координат. Пользователей много, типов пользователей около 5-7. В таблицу каждые n минут пачкой записываются пользователи (и время на момент записи), которые находятся в определенных зонах, если они не находятся в этих зонах, то и не записываются. n для каждого типа может быть разным. На самом деле таблиц две, в одной строка на пользователя, а во второй тип, время и массив пользователей которые были отмечены в этот момент времени.
Хотелось бы получить быстрый запрос, который выдавал бы пользователя, тип события (появился, исчез) и время события.
на основе оконных функций lag, lead как-то не очень быстро получается и к тому же их не запихнуть в where. Может есть что-то еще?
П.с. Возможно такие задачи лучше решать потоково по мере появления новых записей и наверное даже не средствами sql, но сейчас другой возможности нет.
d-stream, вот да, не поспоришь)
на ддл не приведу, но так вот:
user_id - character varying
user_type - character varying
lon - double
lat - double
timecode - timestamp
Во второй таблице с группировкой по user_type и timecode пользователи собраны в users_at_time - character varying[] без геокоординат