Hive SQL 开窗函数判断最近24小时数据一致性
假设需要判断的数据在表 table1 中,包含字段 id 和 value,时间戳字段为 timestamp。可以按照时间戳做开窗函数,选取最近的 24 小时数据,并且按照 id 分组,统计每个 id 对应的 value 是否一致。
SELECT id,
CASE
WHEN COUNT(DISTINCT value) = 1 THEN '一致'
ELSE '不一致'
END AS is_consistent
FROM (
SELECT id, value,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY timestamp DESC) AS rn
FROM table1
WHERE timestamp >= UNIX_TIMESTAMP() - 24*3600 -- 最近 24 小时数据
) t
WHERE rn = 1 -- 只选取最近的一条记录
GROUP BY id;
其中,ROW_NUMBER() 函数用于为每个 id 分组内的记录按照时间戳降序排列,并且为每个记录生成一个行号。只选取行号为 1 的记录,即为最近的一条记录。最后,按照 id 分组,统计每个 id 对应的 value 是否一致。如果一致,返回 '一致',否则返回 '不一致'。
原文地址: https://www.cveoy.top/t/topic/m1qE 著作权归作者所有。请勿转载和采集!