首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -按agregate函数分组

SQL -按agregate函数分组
EN

Stack Overflow用户
提问于 2014-09-29 16:52:33
回答 1查看 76关注 0票数 0

我有一个问题,是否可以通过一个聚合函数来组成一个组。

设想情况:

我有一个表,其中有生物量(公斤)和每天的个体数以及一个描述,因此我可以计算出总av。两个日期内的重量和总人数如下:

代码语言:javascript
复制
select 
  description, 
  sum(biomass)/sum(number_individuals) as av.weight, 
  sum(number_individuals) as individuals 
from 
  Table 
group by description

这是可行的,现在,问题是,我想把这些个体按体重范围分组,这样就可以得到这样的结果:

代码语言:javascript
复制
description range(kg) number av.weigh(g)
Foo         2-3       2400    2584.48

我试过这样的方法

代码语言:javascript
复制
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

任何帮助都将不胜感激。

诚挚的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-29 16:58:00

如果要在聚合上进行聚合,通常需要一个子查询。然而,你提到的是个人,所以也许这就是你想要的:

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26104987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档