sql >> Databáze >  >> RDS >> PostgreSQL

Jak podmíněně seskupit do sloupce bez použití FULL OUTER JOIN

Toto je jednoduchá podmíněná agregace, pokud mohu říci:

select id, 
       array_agg(amount) filter (where type = 'Customer') as customer_array,
       sum(amount) filter (where type = 'Customer') as customer_sum,
       array_agg(amount) filter (where type = 'Partner') as partner_array,
       sum(amount) filter (where type = 'Partner') as partner_sum
from table_a
group by id;

Pokud chcete místo NULL prázdné pole hodnotu, zabalte agregační funkce do coalesce() :

select id, 
       coalesce((array_agg(amount) filter (where type = 'Customer')),'{}') as customer_array,
       coalesce((sum(amount) filter (where type = 'Customer')),0) as customer_sum,
       coalesce((array_agg(amount) filter (where type = 'Partner')),'{}') as partner_array,
       coalesce((sum(amount) filter (where type = 'Partner')),0) as partner_sum
from table_a
group by id;


  1. Při spouštění balíčku došlo k chybě

  2. Mysql spoušť/události vs Cronjob

  3. jak zobrazit celý kód uložené procedury?

  4. Jak vytvořím kontrolní omezení pro více tabulek?