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

FULL OUTER JOIN để hợp nhất các bảng với PostgreSQL

Lấy cảm hứng từ các câu trả lời khác, nhưng có lẽ được tổ chức tốt hơn:

SELECT *, 
       brcht + cana + font + nr AS total 
FROM   (SELECT insee, 
               annee, 
               SUM(Coalesce(brcht.nb, 0)) brcht, 
               SUM(Coalesce(cana.nb, 0))  cana, 
               SUM(Coalesce(font.nb, 0))  font, 
               SUM(Coalesce(nr.nb, 0))    nr 
        FROM   brcht 
               full outer join cana USING (insee, annee) 
               full outer join font USING (insee, annee) 
               full outer join nr USING (insee, annee) 
        GROUP  BY insee, 
                  annee) t 
ORDER  BY insee, 
          annee; 

Trao tặng:

 insee  | annee | brcht | cana | font | nr | total 
--------+-------+-------+------+------+----+-------
 036223 |  2013 |     0 |    0 |    0 |  1 |     1
 036223 |  2014 |     0 |    0 |    0 |  1 |     1
 036223 |  2017 |     0 |    1 |    0 |  0 |     1
 086001 |  2013 |     0 |    0 |    0 |  1 |     1
 086001 |  2014 |     0 |    0 |    0 |  2 |     2
 086001 |  2015 |     0 |    0 |    0 |  4 |     4
 086001 |  2016 |     0 |    2 |    0 |  2 |     4
(7 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các ký tự tối đa trong nhãn (tên bảng, cột, v.v.)

  2. Có thể phát hành PHÂN TÍCH VACUUM <tablename> từ psycopg2 hoặc sqlalchemy cho PostgreSQL không?

  3. Cách chèn khóa ngoại trong mô hình tiếp theo

  4. giá trị khóa trùng lặp vi phạm ràng buộc duy nhất - lỗi postgres khi cố gắng tạo bảng sql từ khung dữ liệu dask

  5. Xóa bằng CTE chậm hơn so với sử dụng bảng tạm trong Postgres