2014-09-29 36 views
0

我有问题,是否可以通过聚合函数进行分组。SQL - 通过聚合函数进行分组

场景:

我有具有生物量(kg)和日常和描述个体数的表,因此,我可以计算出总的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。

我使用Informix 9.40 TC3

任何帮助将不胜感激。

问候

回答

1

如果你想要聚合上的聚集,通常需要一个子查询。但是,你提到个人,所以也许这是你想要的:

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); 
+0

这不是我正在寻找的东西,但它给了我一个想法来修复它:)谢谢@Gordon Linoff! – Santi 2014-09-30 15:58:20