假设要判断的数据在表 A 中,其中包含字段 'time' 和 'value',可以使用窗口函数判断最近 24 小时内数据是否一致。

SELECT time,
       value,
       COUNT(DISTINCT value) OVER (ORDER BY time RANGE BETWEEN INTERVAL '24' HOUR PRECEDING AND CURRENT ROW) AS cnt
FROM A

解释:

  • COUNT(DISTINCT value):统计每个时间点最近 24 小时内不同 'value' 的数量。
  • OVER (ORDER BY time RANGE BETWEEN INTERVAL '24' HOUR PRECEDING AND CURRENT ROW):按照 'time' 做窗口函数,获取每个时间点最近 24 小时的数据。

如果需要筛选最近 24 小时内数据一致的记录,可以在外层包一层查询,筛选出 'cnt' 为 1 的记录。

SELECT *
FROM (
  SELECT time,
         value,
         COUNT(DISTINCT value) OVER (ORDER BY time RANGE BETWEEN INTERVAL '24' HOUR PRECEDING AND CURRENT ROW) AS cnt
  FROM A
) t
WHERE cnt = 1

原文地址: https://www.cveoy.top/t/topic/m1ql 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录