mysql - 如何获得 hive 中时间戳的平均差异

标签 mysql hadoop hive hiveql bigdata

我有下面的表格,其中包含两列

hive> select * from hivetable;

a 2016-09-16T03:01:12.367782Z
b 2016-09-16T03:01:12.300514Z
c 2016-09-16T03:01:12.241532Z
a 2016-09-16T03:01:12.138016Z
c 2016-09-16T03:01:12.136986Z
b 2016-09-16T03:01:10.512201Z
c 2016-09-16T03:01:12.235671Z

Time taken: 0.457 seconds, Fetched: 7 row(s)

现在我想从第一列中找到唯一值和时间戳差异,或者我应该说平均时间戳差异,以防有超过 2 条记录,如 c 的情况。所以在我的例子中,输出应该是这样的

a  1 day 5 hr 30 min 20 sec
b  5 sec
c  30 minutes

注意:这只是一个示例输出,而不是实际输出

是否有可能在配置单元中获得此输出或任何类似的输出?

最佳答案

您只需要使用一个窗口函数来选择分组中的前一行。我不相信它可以压缩成一个查询。

select 
 id,
 avg(DATEDIFF(time, prev_time)) as avg_time_diff_days
from (
   select id,
   time,
   LAG(time, 1, 0) OVER (PARTITION BY id, time ORDER BY time ASC)) as prev_time
   from table
) intervals
group by id;

关于mysql - 如何获得 hive 中时间戳的平均差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39708038/

相关文章:

php - mysql连接表限制特定表

php - 使用 YiiMail 发送密件抄送电子邮件需要很长时间。有办法加快速度吗?

跨多个节点的日志的 Hadoop 句柄

mysql - hive 中的表分区

sql - 在 Hive 中使用带有 if 条件的 select 语句来填充另一列

sql - GROUP BY Apache Hive中的错误

php - 条件 LEFT JOIN MYSQL PHP

mysql - 从 mysql 连接中的不同行选择值

python - 在 hive 或 pyspark 中透视日志

hadoop - 如何使 hive 返回行更快? (例如,限制10)