這是一個奇怪的問題。讓我擺出我的表結構...用於組合在單獨列中具有重疊日期的行的SQL查詢
我'服務器'表給我我的服務器的狀態信息(我每分鐘收到一些這些消息)。我的'客戶'表更新客戶端信息(顯然,客戶端連接到服務器)。
集羣中的一臺服務器始終是「主」,可以這麼說(其他都是次要的)。每個客戶端都會向我的每臺服務器提供延遲信息。
我需要查看客戶端延遲大於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