Hive SQL 使用窗口函数判断最近 24 小时数据是否一致
假设要判断的数据在表 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 著作权归作者所有。请勿转载和采集!