PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как условно да групирате в колона, без да използвате FULL OUTER JOIN

Това е просто условно агрегиране, доколкото мога да преценя:

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;

Ако искате празен масив вместо NULL стойност, обвийте функциите за агрегиране в 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на обекти от заявката, ако няма или е нула

  2. Създаване на частичен уникален индекс с sqlalchemy на Postgres

  3. Как мога да импортирам .sql файл в моята Heroku postgres база данни?

  4. Postgresql последователното сканиране забавя производителността на 500 милиона реда

  5. PostgreSQL обработва имена в Windows