2017-12-18 1 views
0

Ich habe Tabelle namens "Rechnungen". Ich mag den Betrag summiere und gruppierte mich von Unternehmen und DatumGruppe Datensätze von zwei Spalten

+------------+------------------+-------------+-----------+ 
| 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  | 
+------------+------------------+-------------+-----------+ 

Das gewünschte Ergebnis ist:

+------------+------------------+-------------+-----------+ 
| 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  | 
+------------+------------------+-------------+-----------+ 

Wie kann ich es tun?

+2

Do 'GROUP BY', und verwenden Sie' SUM() '. – jarlh

Antwort

1

Sie bereits die Spezifikation in Englisch haben da, es muss nur SQL übersetzen:

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

In MySQL können Sie (je nachdem, wie es konfiguriert ist) weg, ohne die GROUP BY-Linie zu tun, und man könnte siehe SQLs wie diese auf Ihrer Reise durch die Welt der MySQL:

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

MySQL implizit Einfügen der Gruppe für Sie .. ich persönlich würde immer empfehlen, es in explizit, wie einige andere DBs tun ein " auto group by "und die Einhaltung von Standard-SQL macht Ihr SQL-Wissen tragbarer. Sie könnten auch starke Befürworter der „Gruppe sollte immer implizit“ Argument, das erkenne ich, hat seine Vorzüge :)

0

Zusammen

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

Für Gruppierung von Unternehmen

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

finden Zur Gruppierung nach Datum

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

Verwenden Sie Folgendes:

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

Siehe here und here für mehr über GROUP BY Klausel und Beispiele.

Verwandte Themen