在纯PostgreSQL中重整查询结果

时间:2019-04-30 07:19:01

标签: sql postgresql pivot

我有一个这样的SQL查询结果表:

a

我想按天获取每个指标的总和(不存在时填充为0):

a.__proto__

我事先不知道指标的名称。目前,我正在将结果加载到python中,并使用pandas重塑形状,但是肯定有PostgreSQL的方式可以做到这一点。

如何在PostgreSQL中实现上述目标?

2 个答案:

答案 0 :(得分:0)

您可以将case when expressionselect date, max(case when metric='x' then value end) as x, max(case when metric='y' then value end) as y, max(case when metric='z' then value end) as z from tablename group by date 一起使用

function category(val){
    $(".subcat_"+ val).show();
    $("div[class^='subcat_']").each(function(index, item){
       //console.log(1)
       if(!$(this).hasClass("subcat_"+ val)){
          $(this).hide();
       }
    })
}

答案 1 :(得分:0)

您可以使用crosstab

 select * from crosstab('select date, metric ,value from metric_table order by date, metric ,value '
                       ,'select  metric from metric_table group by metric  order by metric') 
                  as ct( date integer ,y integer,x integer, z integer);

但是请注意,必须根据"as ct( date integer ,y integer,x integer, z integer)"结果集

来动态创建"select metric from metric_table group by metric order by metric"部分,然后才能调用查询