如何查看行数趋势

How to check the Row count Trend

我的场景:我想查看行数趋势 我想根据过去 5 天的平均值检查今天的记录计数,如果阈值超过 10%,那么我想显示结果

我有以下数据并且 table 名称是 AGENT 并且 为 inserted_date"4/4/2021" 加载的记录数是 5 并且为插入日期“4/5/2021”加载的记录数为 6 并且为插入日期“4/6/2021”加载的记录数为 1

所以我的查询应该检查最新的插入日期“4/6/2021”并且记录计数为 1,大于阈值 10%,即过去 2 天的平均计数为 5.5

如果 avg 的计数与过去 2 天的平均值不匹配,我希望结果填充为 1,如果趋势匹配,则输出应为 0

请帮忙解决这个问题

您可以使用聚合和 window 函数。像这样:

select (case when cnt < avg_cnt * 0.9 then 1 else 0 end) as matching_flag
from (select inserteddt, count(*) as cnt,
             avg(count(*)) over (order by inserteddt rows between 2 preceding and 1 preceding) as avg_cnt,
             row_number() over (order by inserteddt desc) as seqnum
      from t
      where inserted_dt >= current_date - interval '2 day'
      group by inserteddt
     ) i
where seqnum = 1;

众所周知,日期函数依赖于数据库,但这给出了如何实现这一点的想法。