web-dev-qa-db-ja.com

同じクエリに2つのselectコマンドの結果を追加する方法

現在、以下の2つの選択コマンドがあります。私がやりたいのは、コード内の変数ではなく、SQLクエリに結果を一緒に追加することです。

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

両方を同じSQLに入れて、両方の結果の合計を出力することは可能ですか?

25
Rhys

はい。可能です :D

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

補足として、テーブル名projects-timeは、構文エラーを避けるために区切る必要があります。区切り記号は、使用しているRDBMSによって異なります。

52
John Woo

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

andの両方が必要な場合、サブクエリは便利です。

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
25
Gordon Linoff

UNION ALL 1回、1回集約:

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
10

のような複数の集約について繰り返します

SELECT sum(AMOUNT)AS TOTAL_AMOUNT FROM(SELECT AMOUNT FROM table_1 UNION ALL SELECT AMOUNT FROM table_2 UNION ALL SELECT ASSURED_SUM FROM table_3 ....)

0
Pratik Roy