我有一个这样的SQL查询结果表:
a
我想按天获取每个指标的总和(不存在时填充为0):
a.__proto__
我事先不知道指标的名称。目前,我正在将结果加载到python中,并使用pandas重塑形状,但是肯定有PostgreSQL的方式可以做到这一点。
如何在PostgreSQL中实现上述目标?
答案 0 :(得分:0)
您可以将case when expression
与select 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"
部分,然后才能调用查询