Postgres查询对于最新值返回零,对于历史值返回正确的结果

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

我目前有一个查询,每添加15分钟,新数据集就会运行一次。不幸的是,当查询最新的数据集时,最新的结果返回0。这不是问题,但是如果我对历史数据运行相同的查询,则会得到完全不同的结果集。

代码如下所示:


INSERT  INTO node_states(node,site_id,module,logic_id,datetime)
SELECT NODE,
           SITE_ID, 
           CASE when (lag(uncor_rate, 1) over (PARTITION BY site_id, node ORDER BY datetime desc)) >=2 and uncor_rate >= 2 then 1
           when (lag(uncor_rate, 1) over (PARTITION BY site_id, node ORDER BY datetime desc)) >=2 
           and (lag(uncor_rate, 2) over (PARTITION BY site_id, node ORDER BY datetime desc)) >=2  then 1

        when (lag(uncor_rate, 3) over (PARTITION BY site_id, node ORDER BY datetime desc)) >=2 
        and (lag(uncor_rate, 2) over (PARTITION BY site_id, node ORDER BY datetime desc)) >=2 
        and uncor_rate  >= 2 then 1 else 0 END AS MODULE
        11 AS LOGIC_ID, 
        DATETIME
        from(
            select * FROM PUBLIC.PATHTRAK_SUMMARY_24
                     WHERE TO_TIMESTAMP(DATETIME, 'YYYY-MM-DD HH24:MI') >= NOW() - INTERVAL '200 minutes'
                            order by site_id desc,node desc, datetime desc ) summary

           ON CONFLICT ON CONSTRAINT node_states_site_id_node_datetime_key
            do Nothing;

是什么导致最新的数据行返回不正确的值?

postgresql window-functions
1个回答
0
投票

没关系。

我混淆了LAG和LEAD函数...

© www.soinside.com 2019 - 2024. All rights reserved.