如何在 postgresql 中编写每周平均视图

问题描述

我有一个每月分区的表。我写了一个视图,用于在早上 7-9 点和下午 5-8 点取数据,并分别计算早上和晚上的平均值。但是,我需要每周信息。有速度和日期列。根据日期,我想分别取第一周工作日速度平均值和周六周日速度。我需要一个月内所有周的信息。 我的表: enter image description here

列: enter image description here

我的观点:

CREATE OR REPLACE VIEW trafikhz.speed_2021_july
AS SELECT k.objectid,k.yol_tipi,k.road_type,k.speed,k.color,k.created_at,k.saat,CASE
            WHEN k.saat ~~ '17%'::text OR k.saat ~~ '19%'::text OR k.saat ~~ '18%'::text THEN 2
            ELSE 1
        END AS zaman
   FROM ( SELECT speed_202107.objectid,speed_202107.yol_tipi,speed_202107.road_type,speed_202107.speed,speed_202107.color,speed_202107.created_at,split_part(split_part(speed_202107.created_at::character varying::text,' '::text,2),'.'::text,1) AS saat
           FROM speed_202107) k
  WHERE k.saat ~~ '17%'::text OR k.saat ~~ '19%'::text OR k.saat ~~ '18%'::text OR k.saat ~~ '07%'::text OR k.saat ~~ '08%'::text OR k.saat ~~ '09%'::text;

    -- trafikhz.speed_2021_temmuz_ortalama source

CREATE OR REPLACE VIEW trafikhz.speed_2021_july_avg
AS SELECT m."sabah_ortalama_hız",n."aksam_ortalama_hız"
   FROM ( SELECT avg(speed_2021_july.speed) AS "sabah_ortalama_hız"
           FROM speed_2021_july
          WHERE speed_2021_july.zaman = 1) m,( SELECT avg(speed_2021_july.speed) AS "aksam_ortalama_hız"
           FROM speed_2021_july
          WHERE speed_2021_july.zaman = 2) n;

您对解决方案有什么建议吗? 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)