按国家与ClaimId分组计算平均值的技术实现咨询
按国家和ClaimId计算索赔金额平均值的实现方案
嘿,这个需求其实很典型,用SQL的分组聚合就能轻松搞定!先理清楚咱们的源数据和目标:
源数据表
| Country | ClaimId | ClaimItem | ClaimAmt |
|---|---|---|---|
| IN | C1 | 1 | 100 |
| IN | C1 | 2 | 200 |
| US | C2 | 1 | 100 |
| US | C2 | 2 | 100 |
| US | C2 | 3 | 100 |
| US | C3 | 1 | 100 |
| US | C3 | 2 | 100 |
| UK | C4 | 1 | 100 |
| UK | C4 | 2 | 200 |
| UK | C1 | 1 | 100 |
| UK | C1 | 2 | 200 |
需求说明
我们需要按Country(国家)和ClaimId(索赔单号)这两个维度分组,计算每组内ClaimAmt(索赔金额)的平均值,最终生成包含Country、ClaimId和Avg(平均值)字段的目标表。
实现代码(SQL)
SELECT Country, ClaimId, AVG(ClaimAmt) AS Avg FROM your_table_name -- 这里替换成你实际的表名 GROUP BY Country, ClaimId;
代码解释
GROUP BY Country, ClaimId:把所有拥有相同国家+相同索赔单号的行归为一组,确保我们是在每个国家的每个索赔单维度下计算平均值AVG(ClaimAmt):SQL内置的平均值聚合函数,自动计算每组内所有ClaimAmt的平均值AS Avg:给计算出来的平均值列起别名,正好对应目标表的Avg字段
最终目标表结果
| Country | ClaimId | Avg |
|---|---|---|
| IN | C1 | 150 |
| US | C2 | 100 |
| US | C3 | 100 |
| UK | C4 | 150 |
| UK | C1 | 150 |
内容的提问来源于stack exchange,提问作者Deepesh
相关产品推荐
相关产品推荐

