首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在子选择中创建聚合,而不必向group by列表添加引用的字段

在子选择中创建聚合,而不必向group by列表添加引用的字段
EN

Stack Overflow用户
提问于 2013-12-21 02:16:19
回答 1查看 33关注 0票数 0

我想对我的数据进行嵌套分组/聚合,但我希望扁平化输出,以便只获得外部组将生成的行

2级嵌套组输出通常如下所示:

代码语言:javascript
复制
+-----------+-----------+---------------+
|outer_group|inner_group|aggregate_value|
+-----------+-----------+---------------+
|          8|dist_yes   |          191.0|
|          8|dist_no    |           83.0|
|          9|dist_yes   |          135.0|
|          9|dist_no    |           89.0|
+-----------+-----------+---------------+

但是我想要的是三列,第一列是外部组,第二列是"dist_no",“dist_no”是聚合,第三列是"dist_yes","dist_yes“是聚合。

将有两行,outer_group数为8,9,dist_no数为83,89,dist_yes数为191,135

我尝试在select语句中使用子查询,并从group by列表中取出dist_yes_no字段,但是子查询需要引用dist_yes_no字段,这意味着它必须在group by列表中(至少使用我正在使用的H2 ),我又回到了开始的位置

有什么想法?谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-12-21 02:40:25

像这样的东西会有帮助吗?

代码语言:javascript
复制
    select a.outer_group, a.aggr_dist_no, b.aggr_dist_yes from
    (select outer_group, 
sum(value) as aggr_dist_no, 
null as aggr_dist_yes 
where inner_group = dist_no 
group by outer_group) a
    join
    (select outer_group, 
null as aggr_dist_no, 
sum(value) as aggr_dist_yes
where inner_group = dist_yes 
group by outer_group) b
    on a.outer_group = b.outer_group
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20709642

复制
相关文章

相似问题

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