Oracle - RETORNO combinado con funciones agregadas

Oracle admiteRETURNING cláusula que podría ser muy útil.

Por ejemplo para datos:

CREATE TABLE t(Id INT, Val varchar2(50));

INSERT INTO t(Id, Val)
SELECT 10,'a' FROM dual
UNION ALL SELECT 20,'b' FROM dual
UNION ALL SELECT 30,'a' FROM dual
UNION ALL SELECT 40,'b' FROM dual;

Consulta

DECLARE
   l_cnt INT;
BEGIN
   DELETE FROM t RETURNING COUNT(*) INTO l_cnt;
   DBMS_OUTPUT.put_line('l_cnt: ' || l_cnt);
END;

l_cnt: 4

Es compatible con MIN / MAX / AVG / SUM / LISTAGG:

DECLARE
   l_max INT;
   l_min INT;
   l_str VARCHAR2(100);
BEGIN
   DELETE FROM t 
   RETURNING MAX(id), MIN(id), LISTAGG(id, ',') WITHIN GROUP(ORDER BY id) 
   INTO l_max, l_min, l_str;
   DBMS_OUTPUT.put_line('l_max:'||l_max||' l_min:'||l_min||' l_str:'|| l_str);
END;

l_max: 40 l_min: 10 l_str: 10,20,30,40

Desafortunadamente cuando se combina conDISTINCT palabra clave me sale un error:

DECLARE
   l_distinct_cnt INT;
BEGIN
   DELETE FROM t 
   RETURNING COUNT(DISTINCT val) INTO l_distinct_cnt ;
   DBMS_OUTPUT.put_line('l_distinct_cnt:' || l_distinct_cnt );
END;

ORA-00934: la función de grupo no está permitida aquí

db <> demostración de violín

a pregunta es por qué las funciones agregadas conDISTINCT no están permitidos? Estoy buscando una respuesta de fuentes oficiales.

EDITAR

Tenga en cuenta queCOUNT(DISTINCT ...) fue solo un ejemplo. El mismo comportamiento es paraSUM(col)/SUM(DISTINCT col) y cualquier función agregada que admitaDISTINCT palabra clave.

SUM (val) vs SUM (DISTINCT val)

Respuestas a la pregunta(2)

Su respuesta a la pregunta