PgSQL – Colonne Non aggregate ‘group by’

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;