Это странный вопрос. позвольте мне выложить мои табличные структуры ...SQL-запрос для объединения строк с перекрывающимися датами в отдельных столбцах
Моя таблица «server» дает мне информацию о статусе моих серверов (я получаю несколько из этих сообщений каждую минуту). моя таблица «клиент» обновляется информацией о клиенте (очевидно, клиенты, подключенные к серверам).
Один сервер в кластере всегда является «основным», так сказать (другие являются второстепенными). каждый клиент доставляет мне информацию о задержках на каждый из моих серверов.
Мне нужно увидеть строки, где латентность клиента больше 60 секунд, но мне также нужно знать статус каждого сервера.
вот пример таблицы (сервер, то клиент):
server_name | server_role | sstat_time
--------------+-----------------+----------------------
server1 | PRIMARY | 2013-05-15 01:01:00
server2 | SECONDARY | 2013-05-15 01:02:00
server3 | SECONDARY | 2013-05-15 01:02:00
server1 | PRIMARY | 2013-05-15 01:05:00
server2 | SECONDARY | 2013-05-15 01:06:00
server3 | PRIMARY | 2013-05-15 01:10:00
server1 | SECONDARY | 2013-05-15 01:11:00
server1 | PRIMARY | 2013-05-15 01:22:00
server3 | SECONDARY | 2013-05-15 01:23:00
клиент:
client_name | server_dest | latency | cstat_time
------------+---------------+-----------+--------------------
client1 | server1 | 2 | 2013-05-15 01:01:30
client2 | server2 | 68 | 2013-05-15 01:01:40
client2 | server1 | 99 | 2013-05-15 01:01:50
client1 | server3 | 5 | 2013-05-15 01:10:00
client2 | server3 | 78 | 2013-05-15 01:10:30
client2 | server1 | 15 | 2013-05-15 01:10:50
так, мой желаемый результат этого запроса будет:
client_name | server_name | latency | server_role | cstat_time
--------------+---------------+-----------+--------------+--------------------
client2 | server2 | 68 | SECONDARY | 2013-05-15 01:01:04
client2 | server1 | 99 | PRIMARY | 2013-05-15 01:01:50
client2 | server3 | 78 | PRIMARY | 2013-05-15 01:10:30
я необходимо знать, когда эта задержка составляет более 60 секунд, а также роль скрытого сервера в этот момент времени.
любой ключ, как это сделать?
Я работаю на Postgres 8.4.
это действительно лучший вариант. это не дало мне нескольких результатов, как и остальные. простых объединений было недостаточно. это сделало трюк. Спасибо большое. – jasonmclose