最小値と最大値を作成し、タイムスタンプ値と比較すること、SQL

ブレイクスティール:

私は、PostgreSQLのデータベースを持っていると私は私が最初のサイクルcreated_timestampと最新のサイクルcreated_timestamp間で更新されたプレスを決定するためにクエリを探していますというテーブルがあります。ここevent_log_summaryと呼ばれるテーブルの一例です。

press_id    cycle_number    created_timestamp
    1           1           2020-02-07 16:07:52
    1           2           2020-02-07 16:07:53
    1           3           2020-02-07 16:07:54
    1           4           2020-04-01 13:23:10
    2           1           2020-01-13 8:33:23
    2           2           2020-01-13 8:33:24
    2           3           2020-01-13 8:33:25
    3           1           2020-02-21 18:45:44
    3           2           2020-02-21 18:45:45
    3           3           2020-02-26 14:22:12

たとえば、これは私が私にpress_id、mincycle、max_cycleの3列出力を取得するために使用することをクエリですが、その後、私はmincycleのcreated_timestampにmaxcycleのcreated_timestampを比較し、両者の間の時間の少なくともx量があるかどうかを確認したいです少なくとも1日で、私はそれを実装する方法について不明な点です。

SELECT 
    press_id,
    MIN(cycle_number) AS minCycle,
    MAX(cycle_number) AS maxCycle
FROM
    event_log_detail
GROUP BY
    press_id

MIN(cycle_number> 1)が、私はSQLにかなり新しいですし、かなり完全にこれを実装する方法がわからない私は、探しています出力は持っているだろう - 私は、WHERE(MAX(cycle_number)を使用してのような別のものを試してみました。少なくとも1日の違いは次のようになります。

press_id
    1
    3

プレス1及び3は、それらの最小サイクルcreated_timestampより少なくとも1日の差でその最大サイクルcreated_timestampを有します。私はちょうど私が、出力の他の情報、press_idsでただ一つの列を必要としない、その最初のサイクルと最後のサイクルは少なくとも1日の差がpress_idsを探しています。任意の助けいただければ幸いです。ありがとうございました。

名のない馬 :

あなたは、HAVING句を使用することができます。

select press_id, 
       max(created_timestamp) - min(created_timestamp) as diff
from event_log_detail
group by press_id
having max(created_timestamp) > min(created_timestamp) + interval '1 day';

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=400143&siteId=1