Impala表聚合结果实现咨询:求对应SELECT聚合函数
Impala聚合实现方案
根据你的输入表(结构如下):
| id | category | value |
|---|---|---|
| 1 | A | 10 |
| 1 | A | 20 |
| 1 | B | 30 |
| 2 | A | 15 |
| 2 | B | 25 |
| 2 | B | 35 |
要得到按id分组、各category求和及总求和的结果,用条件聚合(SUM()配合CASE WHEN)就能实现,SQL语句如下:
SELECT id, SUM(CASE WHEN category = 'A' THEN value ELSE 0 END) AS sum_A, SUM(CASE WHEN category = 'B' THEN value ELSE 0 END) AS sum_B, SUM(value) AS total_sum FROM your_table_name GROUP BY id;
语句说明:
SUM(CASE WHEN category = 'A' THEN value ELSE 0 END):只对category为A的行求和,其他行贡献0,最终得到id分组下A类的总和。SUM(CASE WHEN category = 'B' THEN value ELSE 0 END):同理计算B类的总和。SUM(value):直接对当前id分组下的所有value求和,得到总合计。GROUP BY id:确保所有聚合操作都是基于id分组完成的。
替换your_table_name为你的实际表名,执行后就能得到目标结果:
| id | sum_A | sum_B | total_sum |
|---|---|---|---|
| 1 | 30 | 30 | 60 |
| 2 | 15 | 60 | 75 |
内容的提问来源于stack exchange,提问作者Javier Hernando
相关产品推荐
相关产品推荐

