簡體   English   中英

如何計算 TIMESTAMP 列的平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM