CREATE TABLE sum_test (field1 VARCHAR2(3), field2 NUMBER);
INSERT INTO sum_test VALUES ('A',10);
INSERT INTO sum_test VALUES ('B',20);
INSERT INTO sum_test VALUES ('C',30);
COMMIT;
SELECT
field1,
field2,
SUM(field2) OVER (ORDER BY field2 RANGE UNBOUNDED PRECEDING) cum_total
FROM
sum_test
;
-- Result:
FIELD1 FIELD2 TOTAL
1 A 10 10
2 B 20 30
3 C 30 60
;
SELECT
field1,
SUM(field2) field2
FROM
sum_test
GROUP BY
field1
UNION ALL
SELECT
'SUM' field1,
SUM(field2) field2
FROM
sum_test
;
--Result:
FIELD1 FIELD2
1 A 10
2 B 20
3 C 30
4 SUM 60
;
SELECT
SUM(field2) field2
FROM
(SELECT
field1,
SUM(field2) field2
FROM
sum_test
GROUP BY
field1
)
;
--Result:
FIELD2
1 60