[英]How to calculate an average of TIMESTAMP column
我有一个名为时间戳的列
我想知道所有条目的平均时间戳
这是因为我需要知道用户在我的应用程序中执行某些操作的时间
每个时间戳条目的格式是这个
2020-07-13 00:01:12.616 UTC
我不能只使用
SELECT AVG(timestamp) from my_table
因为 AVG 仅适用于某些类型
如何计算平均时间?
您可以转换为秒(或毫秒或微秒)并返回时间戳:
select timestamp_seconds(cast(avg(unix_seconds(timestamp)) as int64))
from my_table
以下是 BigQuery 标准 SQL
我假设您想知道用户活动当天的平均时间或类似的事情-根据您的陈述I need to know in which time is where the user do some actions in my app
#standardSQL
SELECT TIMESTAMP_ADD(ts, INTERVAL avg_value MILLISECOND)
FROM (
SELECT TIMESTAMP_TRUNC(ts, DAY) ts, CAST(AVG(TIMESTAMP_DIFF(ts, TIMESTAMP_TRUNC(ts, DAY), MILLISECOND)) AS INT64) avg_value
FROM `project.dataset.table`
GROUP BY TIMESTAMP_TRUNC(ts, DAY)
)
您可以使用虚拟数据进行测试,使用上面的示例,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT TIMESTAMP '2020-07-13 00:01:12.616 UTC' ts UNION ALL
SELECT '2020-07-13 00:01:14.616 UTC' UNION ALL
SELECT '2020-07-13 00:01:15.616 UTC'
)
SELECT TIMESTAMP_ADD(ts, INTERVAL avg_value MILLISECOND)
FROM (
SELECT TIMESTAMP_TRUNC(ts, DAY) ts, CAST(AVG(TIMESTAMP_DIFF(ts, TIMESTAMP_TRUNC(ts, DAY), MILLISECOND)) AS INT64) avg_value
FROM `project.dataset.table`
GROUP BY TIMESTAMP_TRUNC(ts, DAY)
)
与 output
Row f0_
1 2020-07-13 00:01:14.283 UTC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.