是否可以使用SUM查询为我提供将两列相加的结果? 这些列使用INTERVAL DAY TO SECOND数据类型,我想从两列添加时间给我一个总时间。
感谢您阅读!
答案 0 :(得分:2)
SUM
用于聚合多行,将值一起添加。要从同一行添加两列,请使用+
。例如,给定一个包含此数据的表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
将两列添加到一起:
A+B
-----
3
7
或SELECT SUM(a) + SUM(b) FROM t
或SELECT SUM(a+b) FROM t
(根据您的喜好)结合两种效果:
SUM(A)+SUM(B) SUM(A+B)
--------------- ----------
10 10
对于INTERVAL DAY TO SECOND
,情况有点棘手,因为the SUM
function仅适用于“任何数值数据类型或任何可以隐式转换为数值数据类型的非数字数据类型”。所以你必须来回做一些转换。鉴于此表:
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
答案 1 :(得分: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