Oracle 23c부터 INTERVAL 값에 SUM 함수와 AVG 함수를 사용할 수 있습니다.
You can pass INTERVAL datatypes to the SUM and AVG aggregate and analytic functions. This enhancement makes it easier for developers to calculate totals and averages over INTERVAL values.
테스트를 위해 아래와 같이 테이블을 생성하겠습니다.
-- 1
DROP TABLE t1 PURGE;
CREATE TABLE t1 (c1 INTERVAL DAY TO SECOND, c2 INTERVAL DAY TO SECOND);
INSERT INTO t1 VALUES (INTERVAL '1' DAY, INTERVAL '1' HOUR);
INSERT INTO t1 VALUES (INTERVAL '2' DAY, INTERVAL '2' HOUR);
COMMIT;
아래 쿼리는 INTERVAL 값에 SUM 함수를 사용니다. 23.2 버전은 결과가 반환되지만 19.3 버전은 에러가 발생합니다.
-- 2-1: 23.2
SELECT SUM (c1) AS c1, SUM (c2) AS c2 FROM t1;
C1 C2
----------------------------- -----------------------------
+000000003 00:00:00.000000000 +000000000 03:00:00.000000000
1개의 행이 선택되었습니다.
-- 2-2: 19.3
SELECT SUM (c1) AS c1, SUM (c2) AS c2 FROM t1;
ORA-00932: 일관성 없는 데이터 유형: NUMBER이(가) 필요하지만 INTERVAL DAY TO SECOND임
아래 쿼리는 INTERVAL 값에 AVG 함수를 사용니다.
-- 3
SELECT AVG (c1) AS c1, AVG (c2) AS c2 FROM t1;
C1 C2
----------------------------- -----------------------------
+000000001 12:00:00.000000000 +000000000 01:30:00.000000000
1개의 행이 선택되었습니다.