代码之家  ›  专栏  ›  技术社区  ›  shahzad ise

postgresql平均数

  •  0
  • shahzad ise  · 技术社区  · 7 年前

    我有一个包含以下数据的Postgresql表

    Power_range;unit; Date
    [0.055,0.065];un_MW_el;14.01.1985
    [0.02,0.02];un_MW_el;22.08.1985
    [0.075,0.085];un_MW_el;09.04.1986
    [0.055,0.055];un_MW_el;01.08.1986
    [0.065,0.065];un_MW_el;19.01.1987
    [0.075,0.075];un_MW_el;16.04.1987
    [0.055,0.055];un_MW_el;15.05.1987
    

    我们如何查询列出每年/每行的平均numrange?

    最终结果应该是这样的

    0.060;1985
    0.2;1985
    0.80;1986 
    0.055;1986
    0.065;1987
    0.075;1987
    0.055;1987
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Vao Tsun    7 年前

    我不确定是否有内联平均数学函数,但你可以很容易地用算术模拟它:

    t=# select ((lower(power_range) + upper(power_range))/2)::float(2),extract(year from d) avg From rt;
     float4 | avg
    --------+------
       0.06 | 1985
       0.02 | 1985
       0.08 | 1986
      0.055 | 1986
      0.065 | 1987
      0.075 | 1987
      0.055 | 1987
    (7 rows)
    

    rt是从样本中创建的:

    t=# create table rt(Power_range numrange, unit text, d date);
    CREATE TABLE
    t=# copy rt from stdin delimiter ';';
    

    https://www.postgresql.org/docs/current/static/functions-range.html