如何用SQL按条件求和:仅计算列A唯一值对应的列B总和
实现方案
如果需求是对Column A的所有唯一值,每个值取对应Column B的数值(无论该值在表中出现多少次),再计算总和,可参考以下两种常用写法:
方法1:先去重再求和
利用DISTINCT筛选出Column A唯一的行,再对Column B求和:
SELECT SUM(Column_B) AS total_sum FROM ( SELECT DISTINCT Column_A, Column_B FROM your_table ) AS unique_records;
子查询会先保留每个Column A值对应的一行Column B数据,外层查询再对这些值求和。
方法2:分组后聚合再求和
如果同一Column A对应的Column B值可能存在差异,需要指定取哪个值(比如最大值、最小值),以取最大值为例:
SELECT SUM(MAX(Column_B)) AS total_sum FROM your_table GROUP BY Column_A;
若同一Column A的Column B值完全相同,两种方法结果一致。
示例验证
假设你的表数据如下:
| Column_A | Column_B |
|---|---|
| Amber | 78 |
| Amber | 78 |
| Yellow | 101 |
| Yellow | 101 |
| Green | 46 |
| Blue | 27 |
执行上述任意语句,都会得到78+101+46+27=252的结果。
内容的提问来源于stack exchange,提问作者Kartik
相关产品推荐
相关产品推荐

