【问题标题】:PostgreSQL getting avg, min, max of latency value for each dayPostgreSQL 每天获取平均、最小值、最大值的延迟值
【发布时间】:2020-08-22 21:13:56
【问题描述】:

我有一个 PostgreSQL 表,它显示以 15 秒为增量的周期(日期时间),例如来自

2020-03-27 00:00:00

2020-03-27 23:59:45

每一天都是一样的

2020-03-28 00:00:00

2020-03-28 23:59:45

每 15 秒的增量都会显示一个数值:Latency_us。

我想在单独的列中获取每天的平均值、最小值和最大值。我该怎么做?

这是我的选择查询

create view s3fstj.pc_latency as
select TO_TIMESTAMP(start_time, 'YYYY/MM/DD HH24:MI:SS') as period, epoch, host_name, db_alias, database, db_host, db_host_ip, ip_port, latency_us, pc_domain 
from s3fstj.pc_dblatmonstat_latency

我还将句点字符串转换为时间戳。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    你会使用窗口函数:

    select TO_TIMESTAMP(start_time, 'YYYY/MM/DD HH24:MI:SS') as period,
           epoch, host_name, db_alias, database, db_host, db_host_ip, ip_port,
           latency_us, pc_domain,
           avg(latency_us) over (partition by start_time::date) as avg_day_latency_us,
           min(latency_us) over (partition by start_time::date) as min_day_latency_us,
           max(latency_us) over (partition by start_time::date) as max_day_latency_us
    from s3fstj.pc_dblatmonstat_latency
    

    【讨论】:

    • 是否也可以获得每个增量之间的 30 分钟的平均值、最小值、最大值?比如一整天的 14:00:00 - 14:30:00、15:00:00 - 15:30:00 等的平均、最小值、最大值?
    • @Trunks 。 . .你应该用样本数据和期望的结果提出新的问题。
    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2014-12-19
    • 2021-11-02
    • 2022-11-29
    相关资源
    最近更新 更多