WITH v AS
(SELECT 'a' AS col, 1.1 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.2 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.3 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.2 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.4 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.3 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.5 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.5 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.6 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.4 AS val FROM dual
)
SELECT v.col,
v.val,
SUM(v.val) over() s1,--sum max avg都一样
SUM(v.val) over(PARTITION BY v.col) s2,
SUM(v.val) over(ORDER BY v.val) s3,
SUM(v.val) over(PARTITION BY v.col ORDER BY v.val DESC) s4
FROM v
ORDER BY v.col
(SELECT 'a' AS col, 1.1 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.2 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.3 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.2 AS val
FROM dual
UNION ALL
SELECT 'a' AS col, 1.4 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.3 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.5 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.5 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.6 AS val FROM dual
UNION ALL
SELECT 'b' AS col, 1.4 AS val FROM dual
)
SELECT v.col,
v.val,
SUM(v.val) over() s1,--sum max avg都一样
SUM(v.val) over(PARTITION BY v.col) s2,
SUM(v.val) over(ORDER BY v.val) s3,
SUM(v.val) over(PARTITION BY v.col ORDER BY v.val DESC) s4
FROM v
ORDER BY v.col