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

Làm thế nào để thực hiện một SUM trên hai bảng không liên quan?

SELECT (SELECT SUM(table1.col1) FROM table1) AS sum_1,
       (SELECT SUM(table2.col1) FROM table2) AS sum_2;

Bạn cũng có thể viết nó là:

SELECT t1.sum_c1, t1.sum_c2, t2.sum_t2_c1
FROM
(
     SELECT SUM(col1) sum_c1,
            SUM(col2) sum_c2
 FROM table1
) t1
FULL OUTER JOIN
(
     SELECT SUM(col1) sum_t2_c1
     FROM table2
) t2 ON 1=1;

FULL JOIN được sử dụng với một điều kiện dud để một trong hai truy vấn con không thể tạo ra kết quả nào (trống) mà không làm cho truy vấn lớn hơn không có kết quả.

Tôi không nghĩ rằng truy vấn như bạn đã viết sẽ tạo ra kết quả mà bạn mong đợi nhận được, bởi vì nó đang thực hiện CROSS JOIN giữa table1 và table2, điều này sẽ làm tăng mỗi SUM bằng số hàng trong bảng khác. Lưu ý rằng nếu một trong hai table1 / table2 trống, CROSS JOIN sẽ khiến X hàng x 0 hàng trả về kết quả trống.

Hãy xem SQL Fiddle này và so sánh kết quả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Theo dõi dấu thời gian sửa đổi cuối cùng của một hàng trong Postgres

  2. Làm cách nào để chèn đúng nhiều hàng vào PG với node-postgres?

  3. Truy vấn trong truy vấn:Có cách nào tốt hơn không?

  4. chạy tổng số bằng cách sử dụng hàm windows trong sql có cùng một kết quả cho cùng một dữ liệu

  5. Cách chuẩn bị các câu lệnh và tham số liên kết trong Postgresql cho C ++