我有一个存储函数,用于计算实体的状态(此状态不是实体的属性,但需要计算)。
在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语句中的存储函数的情况下执行此操作?
答案 0 :(得分:1)
您可以将查询包装在外部查询中,以隔离函数调用并使用别名:
select count(*),
status
from (
select s.*,
my_function(entity_id) as status
from some_Table s
)
group by status
order by status