2017-12-18 170 views
0

我有名为“invoices”的表。我想总结量和公司进行分组,并至今两列组记录

+------------+------------------+-------------+-----------+ 
| company_id | company   | date  | amount | 
+------------+--------------------------------+-----------+ 
| 1  | chevrolet  | 2017-11-18 | 100  | 
| 1  | chevrolet  | 2017-11-18 | -70  | 
| 1  | chevrolet  | 2017-11-25 | 50  | 
| 2  | mercedes   | 2017-04-01 | 30  | 
| 2  | mercedes   | 2017-04-01 | -30  | 
| 2  | mercedes   | 2017-09-01 | 50  | 
| 3  | toyota   | 2017-05-12 | 60  | 
+------------+------------------+-------------+-----------+ 

期望的结果是:

+------------+------------------+-------------+-----------+ 
| company_id | model_name  | date  | amount | 
+------------+--------------------------------+-----------+ 
| 1  | chevrolet  | 2017-11-18 | 30  | 
| 1  | chevrolet  | 2017-11-25 | 50  | 
| 2  | mercedes   | 2017-04-01 | 0  | 
| 2  | mercedes   | 2017-09-01 | 50  | 
| 3  | toyota   | 2017-05-12 | 60  | 
+------------+------------------+-------------+-----------+ 

我该怎么办呢?

+2

做'GROUP BY',并使用SUM()。 – jarlh

回答

1

你已经在英语规范在那里,它只是需要转换到SQL:

select company_id, model_name, date, sum(amount) as amount 
from invoices 
group by company_id, model_name, date 

在MySQL中,你可以(取决于它的配置)脱身,而不做GROUP BY行,你可能看到您的旅行这样SQLS通过MySQL的世界:

select company_id, model_name, date, sum(amount) as amount 
from invoices 

MySQL是由你..我个人倒总是建议把它放在明确,因为一些其他的DB做一个“隐式插入组自动分组“,并坚持标准的SQL使你的SQL知识更便携。您也可以“按组应始终隐”找到的强烈支持者的说法这,我承认,有其可取之:)

0

一起

SELECT 
SUM (amount) 
FROM <table-name> 
GROUP BY company, date; 

对于分组由公司

SELECT 
SUM (amount) 
FROM <table-name> 
GROUP BY company; 

对于按日期分组

SELECT 
SUM (amount) 
FROM <table-name> 
GROUP BY date; 
0

使用下列内容:

SELECT company_id, model_name, date , SUM(amount) AS amount 
      FROM invoices GROUP BY company, date; 

更多有关GROUP BY条款和示例见herehere