如何在SQL中按Name分组聚合表行并生成新表?
SQL按姓名聚合求和解决方案
原数据表
| Name | Limit | Use |
|---|---|---|
| Person1 | 100 | 50 |
| Person1 | 200 | 200 |
| Person2 | 200 | 0 |
| Person3 | 100 | 100 |
| Person3 | 200 | 50 |
| Person3 | 300 | 50 |
期望结果表
| Name | Limit | Use |
|---|---|---|
| Person1 | 300 | 250 |
| Person2 | 200 | 0 |
| Person3 | 600 | 200 |
实现SQL语句
通过GROUP BY按Name分组,使用SUM()函数对Limit和Use列分别求和,即可得到每个唯一姓名对应的聚合结果:
SELECT Name, SUM(Limit) AS Limit, SUM(Use) AS Use FROM your_table_name -- 替换为你的实际表名 GROUP BY Name;
注意事项
如果Limit或Use是数据库中的关键字(比如MySQL里Limit属于关键字),需要用反引号或方括号包裹列名避免语法错误:
MySQL 兼容写法
SELECT Name, SUM(`Limit`) AS `Limit`, SUM(`Use`) AS `Use` FROM your_table_name GROUP BY Name;
SQL Server 兼容写法
SELECT Name, SUM([Limit]) AS [Limit], SUM([Use]) AS [Use] FROM your_table_name GROUP BY Name;
内容的提问来源于stack exchange,提问作者ncnc_2020
相关产品推荐
相关产品推荐

