我对SQL很陌生,我需要弄清楚如何在同一个语句中运行多个总和。例如,假设你有一张像这样的表......
+----+---------------+-------------+------------+-----------+
| id | name | order_num | cost | company |
+----+---------------+-------------+------------+-----------+
| 1 | John Smith | 0 | 10.00 | CompanyA |
| 2 | Sally Thomas | 1 | 38.00 | CompanyA |
| 2 | Sally Thomas | 2 | 12.00 | CompanyA |
| 1 | John Smith | 3 | 19.00 | CompanyA |
| 2 | Jimmy John | 4 | 40.00 | CompanyB |
+----+---------------+-------------+------------+-----------+
我想写一个查询,返回在CompanyA的每个客户花费的名称和总金额。所以基本上......
+---------------+------------+
| name | total |
+---------------+------------+
| John Smith | 29.00 |
| Sally Thomas | 50.00 |
| Jimmy John | 0.00 |
+---------------+------------+
要做到这一点,我知道我将需要使用sum函数。但到目前为止,我所尝试的所有内容都会导致整个专栏的总结,而不是每个人的各个部分。这只是我所做的更大表格的简化示例,因此我事先并不知道任何现场数据。如何在一个查询中执行多个求和以获得此结果?谢谢!
另外,如果重要的话,我会使用MySQL。
答案 0 :(得分:4)
我想你想要:
select name, sum(case when company = 'CompanyA' then cost else 0 end) as Total
from t
group by name;