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

Как да направя SUM в две несвързани таблици?

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

Можете също да го напишете като:

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 се използва с неуспешно условие, така че всяка подзаявка да не даде резултати (празна), без да доведе до липса на резултат от по-голямата заявка.

Не мисля, че заявката, както сте написали, би довела до резултата, който очаквахте да получите, защото прави CROSS JOIN между table1 и table2, което ще увеличи всяка SUM с броя на редовете в другата таблица. Обърнете внимание, че ако таблица1/таблица2 е празна, CROSS JOIN ще накара X редове по 0 реда да върнат празен резултат.

Вижте този SQL Fiddle и сравнете резултатите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се свържете с Postgres чрез Node.js

  2. Кой е най-бързият начин за извличане на последователни данни от база данни?

  3. Версиите на Postgres не са съвместими

  4. Съвети за най-добри практики за PostgreSQL VACUUM and ANALYZE

  5. Как да изчислим задържането месец спрямо месец с помощта на SQL