ORA-00979 在 select 语句中使用用户定义函数进行查询时出现“不是组函数”错误

ORA-00979 Not a Group function error for query with User defined function in select statement

我有这个查询,其中在 select 和 group by 语句中添加了用户定义的函数。

不带 WITH 子句的内部 select 查询运行良好,没有给出任何错误。但是在添加 WITH 子句后会出现以下错误 -

ORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause:
*Action: Error at Line: 3 Column: 29

我需要 WITH 子句 return 仅基于输入范围的整个结果集的一个子集。

查询如下:

 WITH INFO AS (
    SELECT 
        GET_EVAULATED_VALUE(T.C_IMP, T.IMP) AS IMPORTANCE,
        count(*) AS NO_OF_PC_AFFECTED 
    FROM TABLE_NAME T 
    WHERE T.ACNT_REL_ID = 16 
        GROUP BY 
        (GET_EVAULATED_VALUE(T.C_IMP, T.IMP))
    ORDER BY IMPORTANCE desc 
)
SELECT * FROM 
( 
    SELECT ROWNUM AS RN,
    (SELECT COUNT(*) FROM INFO) COUNTS,
    IMPORTANCE
 FROM INFO
)
WHERE RN > 0 AND RN <= 10;

我不确定如何将 CTE 与用户定义函数的分组依据一起使用。但我意识到我可以重写查询以删除子查询和 CTE 并使其更简单,如下所示(并且有效):

select * from ( 
    select a.*, ROWNUM rnum from
        (SELECT
            count(*) over() as COUNTS,
            GET_EVAULATED_VALUE(T.C_IMP, T.IMP) AS IMPORTANCE,
            count(*) AS NO_OF_PC_AFFECTED
        FROM TABLE_NAME T 
        WHERE T.ACNT_RELATION_ID = 16
        GROUP BY
            (GET_EVAULATED_VALUE(T.C_IMP, T.IMP))
        ORDER BY importance desc) a
    where ROWNUM <= 10 )
where rnum >= 0;