他の人から継承したスクリプトを使用して Ingres DB に取り組んでいます。スクリプトを変更して、最新の start_time イベントと end_time イベントの action_times と、2 つのイベントの差を引き出す必要があります。DB のサンプルを以下に示します。
id_num | version | action_id | action_time
----------------------------------------------------------------------------
1 2 start_time 2014-05-26 14:58:14
1 2 end_time 2014-05-26 14:58:16
1 4 start_time 2014-05-27 10:10:57
1 4 end_time 2014-05-27 10:10:11
これまでのところ、私が思いついたのは次のとおりです。
SELECT max(a.action_time) as BIG, max(b.action_time) as SMALL, max(a.action_time) - max(b.action_time) as DIFF
FROM table1 as a, table1 as b,
WHERE a.id_num = '1' AND a.action_id = 'end_time' AND b.id_num = '1' AND b.action_id = 'start_time'
しかし、結果は次のようになります。
BIG SMALL DIFF
----------------------------------------------------------------------------
2014-05-27 10:10:11 2014-05-27 10:10:57 null
このような質問がすでに回答されている場合は申し訳ありませんが (おそらく回答されていると思います)、さまざまなフォーラムを数日かけて調べましたが、同様の例が見つかりません。おそらく、検索の言い回しです。条項。大学でこのようなことをカバーしたと確信していますが、それは数年前のことで、最近のSQLは少し錆びています。前もって感謝します!
編集:いくつかの調査の後、DB GUIで機能する次のことを思いつきました:
SELECT ingresdate(varchar(max(a.action_time))) as BIG, ingresdate(varchar(max(b.action_time))) as SMALL, date_part('secs',ingresdate(varchar(max(a.action_time))) - ingresdate(varchar(max(b.action_time)))) as DIFF
FROM table1 as a, table1 as b,
WHERE a.id_num = '1' AND a.action_id = 'end_time' AND b.id_num = '1' AND b.action_id = 'start_time'