presto—在sql中将行分组成新行并求和

sqougxex  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(430)

假设我有这样的table:

date | type | value1 | value 2
––––––––––––––––––––––––––––––
2002 |  a   |  100   |   1.2 
2002 |  b   |   25   |   2.2 
2002 |  e   |   60   |   5.2 
2002 |  f   |   40   |   4.2

我想得到的是对value1小于50的行的value1和value2的值求和,并在type列中给它一个新的值,例如“other”,这样的结果如下所示。日期行可以省略。

type | value1 | value 2
 ––––––––––––––––––––––––
   a   |  100   |   1.2 
   e   |  60    |   5.2 
 other |  65    |   6.2

仅仅合并和求和行或者创建所有内容的摘要行都很容易,但是我希望type列中包含合并的“other”值。我该如何处理这个问题?

xriantvc

xriantvc1#

你可以使用两个级别的伤害:

select (case when value1 > 50 then type else 'other' end),
       sum(value1) as value1, sum(value2) as value2
from (select type, sum(value1) as value1, sum(value2) as value2
      from t
      group by type
     ) t
group by (case when value1 > 50 then type else 'other' end)
order by min(value1);

相关问题