1

SUM クエリを使用して、2 つの列を加算した結果を取得することはできますか? これらの列は INTERVAL DAY TO SECOND データ型を使用しており、両方の列の時間を加算して合計時間を計算したいと考えています。

読んでくれてありがとう!

4

2 に答える 2

2

SUM複数の行を集約し、値を加算するためのものです。同じ行から 2 つの列を追加するには、 を使用します+。たとえば、次のTデータを含むテーブルがあるとします。

 A | B
---+---
 1 | 2
 3 | 4

SELECT SUM(a), SUM(b) FROM tの行を集計するために加算を使用する単一の行を取得するように記述できますT

 SUM(A) | SUM(B)
--------+--------
      4 |      6

またはSELECT a + b FROM t、2 つの列を一緒に追加するには:

 A+B
-----
   3
   7

または、SELECT SUM(a) + SUM(b) FROM tまたはSELECT SUM(a+b) FROM t(お好みで) 2 つの効果を組み合わせます。

 SUM(A)+SUM(B)                 SUM(A+B)
---------------               ----------
            10                       10

の場合、この関数は「任意の数値データ型または数値データ型に暗黙的に変換できる非数値データ型」に対してのみ機能するためINTERVAL DAY TO SECOND状況は少し複雑です。そのため、前後に変換を行う必要があります。このテーブルを考えると:SUM

 A                  | B
---------------------+-------------------
 +1 01:01:01.000001 | +2 02:02:02.000002
 +3 03:03:03.000003 | +4 04:04:04.000004

このクエリ:

SELECT NUMTODSINTERVAL(SUM(EXTRACT(DAY FROM a + b)), 'DAY') +
       NUMTODSINTERVAL(SUM(EXTRACT(HOUR FROM a + b)), 'HOUR') +
       NUMTODSINTERVAL(SUM(EXTRACT(MINUTE FROM a + b)), 'MINUTE') +
       NUMTODSINTERVAL(SUM(EXTRACT(SECOND FROM a + b)), 'SECOND') AS "SUM(A+B)"
  FROM t
;

この結果が得られます:

 SUM(A+B)
---------------------
 +10 10:10:10.000010
于 2012-12-11T19:40:02.947 に答える
1

間隔を追加できますが、問題ありません。

SQL> select a, b, a+b from t;

A                    B                    A+B
-------------------- -------------------- -----------------------------
+01 00:00:00.000000  +00 00:05:00.000000  +000000001 00:05:00.000000000
+02 00:00:00.000000  +00 00:50:00.000000  +000000002 00:50:00.000000000
+02 00:14:24.000000  +00 00:50:12.000000  +000000002 01:04:36.000000000
于 2012-12-11T21:10:55.373 に答える