In una Query Postgresql le colonne non incluse in group by
generano errore:
Errore SQL [42803]: ERROR: column "..." must appear in the GROUP BY clause or be used in an aggregate function...
Si può risolvere con una subquery:
/*
* da Tabella recupera totali per anno e per anno totali tipo
*/
with anno as (
select "Anno" ,count(*) as "TotaleAnno" from "Tabella" t
group by t."Anno"
order by t."Anno" desc
), tipo_x_anno as (
SELECT json_agg(row_to_json(rowyear)) from (
-- colonne non group
select "Anno", "TotaleAnno",
-- colonne group
( SELECT json_agg(row_to_json(row)) as "TotaleTipoAnno" FROM (
select "Tipo" ,count(*) as "TotaleTipo"
from "Tabella" t
where t."Anno" = va."Anno"
group by t."Tipo"
order by t."Tipo"
)row
)
from anno va
) rowyear
)
-- adesso compongo risultato
select * from tipo_x_anno;