我有一个问题,是否可以通过一个聚合函数来组成一个组。
设想情况:
我有一个表,其中有生物量(公斤)和每天的个体数以及一个描述,因此我可以计算出总av。两个日期内的重量和总人数如下:
select
description,
sum(biomass)/sum(number_individuals) as av.weight,
sum(number_individuals) as individuals
from
Table
group by description这是可行的,现在,问题是,我想把这些个体按体重范围分组,这样就可以得到这样的结果:
description range(kg) number av.weigh(g)
Foo 2-3 2400 2584.48我试过这样的方法
SELECT
description,
case when sum(biomass)/sum(number_individuals) >= 2000.0
and sum(biomass)*1000/sum(number_individuals) < 3000 then '2-3'
else 'nothing'
end as desc_range
FROM Table
Group by
description,
sum(biomass)/sum(number_individuals)但是它似乎不起作用,也不使用别名desc_range ofc。
我正在使用Informix9.40 TC3
任何帮助都将不胜感激。
诚挚的问候
发布于 2014-09-29 16:58:00
如果要在聚合上进行聚合,通常需要一个子查询。然而,你提到的是个人,所以也许这就是你想要的:
select description,
(case when biomass between 2 and 3 then '2-3'
else 'nothing'
end) as biomass
sum(biomass)/sum(number_individuals) as av.weight, sum(number_individuals) as individuals
from Table
group by description,
(case when biomass between 2 and 3 then '2-3'
else 'nothing'
end);https://stackoverflow.com/questions/26104987
复制相似问题