将行分组到一个新行中,并在 SQL 中求和



假设我有这样的表:

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 | value1 | value 2
––––––––––––––––––––––––
a   |  100   |   1.2 
e   |  60    |   5.2 
other |  65    |   6.2 

只需组合和求和行或创建所有内容的摘要行就很容易,但我希望类型列包含组合的"其他"值。我将如何处理这个问题?

您可以使用两个级别的聚合:

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

相关内容

  • 没有找到相关文章

最新更新