PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách nhóm có điều kiện thành cột mà không cần sử dụng FULL OUTER JOIN

Đây là một tập hợp có điều kiện đơn giản theo như tôi có thể nói:

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;

Nếu bạn muốn một mảng trống thay vì NULL giá trị, bọc các hàm tổng hợp thành một 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. Chọn người dùng chỉ thuộc các phòng ban cụ thể

  2. Làm cách nào để sử dụng kiểu nhập văn bản dưới dạng (các) tên cột trong hàm Postgres?

  3. 'xác thực mật khẩu không thành công cho postgres của người dùng'

  4. Làm cách nào để chuyển đổi chữ hoa / thường cho mỗi chữ cái trong một chuỗi bằng SQL?

  5. Micronaut không kết nối với db trong yml