Как добавить результаты двух команд select в одном запросе

В настоящее время у меня есть две команды выбора, как показано ниже. Я хотел бы сделать это, чтобы добавить результаты вместе в SQL-запрос, а не переменные в коде.

select sum(hours) from resource;
select sum(hours) from projects-time;

Возможно ли иметь оба в одном SQL и выводить сумму обоих результатов?

Ответы

Ответ 1

Да. Возможно :D

SELECT  SUM(totalHours) totalHours
FROM
        ( 
            select sum(hours) totalHours from resource
            UNION ALL
            select sum(hours) totalHours from projects-time
        ) s

В качестве побочного элемента, tablename projects-time необходимо разграничить, чтобы избежать ошибки синтаксиса. Символы разделителя различаются по используемой СУБД.

Ответ 2

Что-то простое, как это, можно сделать с помощью подзапросов в предложении select:

select ((select sum(hours) from resource) +
        (select sum(hours) from projects-time)
       ) as totalHours

Для такого простого запроса, как этот, такой подвыбор является разумным.

В некоторых базах данных вам может потребоваться добавить from dual для компиляции запроса.

Если вы хотите выводить каждый отдельно:

select (select sum(hours) from resource) as ResourceHours,
       (select sum(hours) from projects-time) as ProjectHours

Если вам нужны обе и сумма, подзапрос удобен:

select ResourceHours, ProjectHours, (ResourceHours+ProjecctHours) as TotalHours
from (select (select sum(hours) from resource) as ResourceHours,
             (select sum(hours) from projects-time) as ProjectHours
     ) t

Ответ 3

UNION ALL один раз, агрегировать один раз:

SELECT sum(hours) AS total_hours
FROM   (
   SELECT hours FROM resource
   UNION ALL
   SELECT hours FROM "projects-time" -- illegal name without quotes in most RDBMS
   ) x

Ответ 4

Повторите для нескольких агрегаций типа ВЫБЕРИТЕ сумму (AMOUNT) AS TOTAL_AMOUNT FROM (      SELECT AMOUNT FROM table_1      СОЮЗ ВСЕ      SELECT AMOUNT FROM table_2      СОЮЗ ВСЕ      SELECT ASSURED_SUM FROM table_3      .... )

Ответ 5

Если вы хотите использовать несколько операций

select (sel1.s1+sel2+s2)

(select sum(hours) s1 from resource) sel1
join 
(select sum(hours) s2 from projects-time)sel2
on sel1.s1=sel2.s2