2017-12-18 94 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