如何编写SQL通用查询对不同行指定值按Name分组求和
通用SQL实现按Name分组指定数值求和
问题需求
编写通用SQL语句,对account表中指定行的数值字段进行求和,并按Name字段分组展示结果,要求适配Name字段包含多条不同数据的场景。
场景详情
- 目标表:
account - 原表数据(执行
SELECT * FROM account返回):
| Name | Code_led | price. |
|---|---|---|
| Arsenal | 987 | -100 |
| Arsenal | 654 | -500 |
| Arsenal | 443 | -300 |
- 期望结果示例(仅对
Code_led为987和654的行求和):
| Name | total_price |
|---|---|
| Arsenal | -600 |
通用解决方案
1. 基础全量分组求和
如果需要对每个Name下所有行的价格值求和,使用以下语句:
SELECT Name, SUM(price) AS total_price FROM account GROUP BY Name;
注意:若实际表中价格字段名为
price.(带点),请将SQL中的price替换为price.。
2. 带条件的指定行求和(匹配示例需求)
如果需要仅筛选特定行参与求和(如示例中排除Code_led=443的行),添加WHERE子句即可,保持通用性:
SELECT Name, SUM(price) AS total_price FROM account WHERE Code_led IN (987, 654) -- 可根据需求修改条件,比如NOT IN (443) GROUP BY Name;
关键说明
SUM(price):对分组内的价格字段执行求和运算GROUP BY Name:按Name字段分组,确保每个Name仅返回一条聚合结果WHERE子句:可选,用于精准筛选需要参与求和的行,支持各种条件匹配(范围、等值、模糊匹配等)AS total_price:为求和结果指定可读性更强的列别名,可根据需求修改
内容的提问来源于stack exchange,提问作者Johny
相关产品推荐
相关产品推荐

