【问题标题】:How to calculate gap between 2 time stamps in Athena (Presto)?如何计算雅典娜(Presto)中2个时间戳之间的差距?
【发布时间】:2023-03-06 01:02:01
【问题描述】:
我有许多 IOT 设备将数据发送到我的 Amazon Athena 服务器,我创建了一个表来存储数据,该表包含 2 列:LocalTime 表示 IOT 设备捕获其状态的时间,ServerTime 表示数据的时间到达服务器(有时物联网设备没有网络连接)
我想计算上周一段时间内的“间隔”(比如说 1 小时),以便了解到达的数据的偏差,例如:
结果应该是这样的
谢谢
【问题讨论】:
标签:
sql
aggregate
presto
amazon-athena
【解决方案1】:
你可以使用date_diff():
select date_diff(hour, servertime, servertime) as hours,
count(*)
from t
group by date_diff(hour, servertime, servertime)
order by hours;
这不会返回 0 值。为此,可以使用left join:
select v.hours, count(*)
from (values (0), (1), (2), (3)) v(hours) left join
t
on hours = date_diff(hour, servertime, servertime)
group by v.hours
order by hours;