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