创建最小值和最大值并将它们与时间戳值sql比较

问题描述 投票:0回答:1

我有一个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的三列输出的查询,但是然后我想将maxcycle created_timestamp与mincycle 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

我已经尝试过使用WHERE(MAX(cycle_number)-MIN(cycle_number> 1)之类的其他方法,但是我对SQL还是很陌生,还不太了解如何实现。我想要的输出会至少有一天的差异如下:

press_id
    1
    3

印刷机1和3的最大周期created_timestamp与最小周期created_timestamp至少相差1天。我只是在寻找第一个周期和最后一个周期相差至少1天的press_ids,我不需要输出任何其他信息,只需在press_ids的一列中输入。任何帮助,将不胜感激。谢谢。

sql postgresql group-by date-arithmetic
1个回答
0
投票

您可以使用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';
© www.soinside.com 2019 - 2024. All rights reserved.