我有一个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
我还将周期字符串转换为时间戳。
答案 0 :(得分:2)
您将使用窗口功能:
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