选择:按功能分组

时间:2018-08-29 14:38:10

标签: group-by oracle12c stored-functions

我有一个存储函数,用于计算实体的状态(此状态不是实体的属性,但需要计算)。
SELECT语句中,我想知道有多少个元素处于哪个状态。

现在,我得到了以下内容:

SELECT   my_function(entity_id) AS status,
         COUNT(*)
FROM     some_table
GROUP BY my_function(entity_id) -- entity_id is a column of some_table
ORDER BY status;

这有效,但是我发现在GROUP BY语句中重复该函数调用非常难看。
上面的代码仅是示例。实际功能是在包中定义的,并且具有多个输入参数。

是否可以在不引用GROUP BY语句中的存储函数的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以将查询包装在外部查询中,以隔离函数调用并使用别名:

select count(*),
       status
from ( 
        select s.*,
               my_function(entity_id) as status
        from some_Table s
     )
group by status
order by status