【问题标题】:Standard deviation of timestamp with timezone - in a group by clause时间戳与时区的标准偏差 - 在 group by 子句中
【发布时间】:2023-02-22 19:05:45
【问题描述】:

这是我的代码:

select  
round(stddev(time_),2) as stddev_time_of_logs,
imei,mob_date,hour_of_day
from hourly_data 
group by imei,mob_date,hour_of_day

它产生以下错误:

SQL Error [42883]: ERROR: function stddev(timestamp with time zone) does not exist

这是通常使用聚合函数的方式,所以我不知道这里有什么问题。任何帮助表示赞赏!

【问题讨论】:

  • 只有stddev ( numeric_type )timestamp with time zone类型不能直接传递给它。您需要先将时间戳转换为数字类型。
  • 如何将时间戳转换为数字?从逻辑上讲,这似乎不太合理。
  • 那么您期望从“时间戳的标准偏差”中得到什么结果?
  • 我想看到那个一小时内的平均分散度,例如 [10:10, 10:20, 10:30, 10:40, 10:50] 每小时的分散度比 [10:10 , 10:15, 10:20]
  • 基本上,我想查看每个“hour_of_day”的平均离散度,例如 [10:10, 10:20, 10:30, 10:40, 10:50] 在平均时间 10 左右的平均离散度为 15 分钟: 30

标签: postgresql standard-deviation


【解决方案1】:

您可以转换为自纪元以来的秒数,然后再转换为间隔:

make_interval(secs => stddev(extract (epoch FROM _time)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多