2009-06-02 8 views
34

Kurze Frage, ich habe die folgende Tabellemysql select sum Gruppe von Datum

+-------------+---------------------+ 
| total  | o_date    | 
+-------------+---------------------+ 
|   35 | 01-11-2009 19:32:44 | 
|  41.5 | 01-12-2009 22:33:49 | 
|  61.5 | 01-23-2009 22:08:24 | 
|   66 | 02-01-2009 22:33:57 | 
|  22.22 | 02-01-2009 22:37:34 | 
|  29.84 | 04-20-2009 15:23:49 | 
+-------------+---------------------+ 

Ich mag die Summe für jeden Monat addieren und Gruppe der Gesamt Monat. So zum Beispiel Jan-> 138 Feb-> 88,2 Apr-> 29,84

Irgendwelche Hinweise darüber.

Dank

Antwort

61

Diese Lösung wird Ihnen die Monatsnamen als Spalte Ihrer Suchresultates durch die Gesamt gefolgt je nach Bedarf.

SELECT MONTHNAME(o_date), SUM(total) 
FROM theTable 
GROUP BY YEAR(o_date), MONTH(o_date) 
+0

gruppiert ist vorausgesetzt, Sie auch das Jahr der Auswahlliste hinzufügen möchten -> YEAR (o_date) –

+1

Oder, um es in dem von Ihnen angegebenen Format zu erhalten, können Sie SELECT CONCAT (MONTNAME (o_date), '->', SUM (total)) –

+0

Sehr nützlich! und Sie können Spalten hinzufügen, um sie zu gruppieren. –

5
select year(o_date), month(o_date), sum(total) 
from table 
group by year(o_date), month(o_date); 
+0

, die Sie wollen Monate in verschiedenen Jahren seperat –

2
SELECT SUM(total) 
FROM table 
GROUP BY MONTH(o_date) 
3

Soweit ich mich erinnere aus einem früheren Leben MySQL eine Abfrage wie

SELECT LEFT(o_date, 7) month, SUM(total) FROM TABLE group BY month

ist der Index auf dem o_date Feld mit (die leider würde ich nicht für YEAR() garantieren und MONTH()).

Sie würden allerdings die month Feld zu formatieren, und dies wird wahrscheinlich nicht auf einem anderen Datenbanksystem indiziert werden ...

0

Group BY Versuchen, wie folgt aus:

select count(A_id) As Tid,Day(CrDate) from Ap Group By Day(CrDate) 
0

Yea Arbeit für mich auf diese Weise:

SELECT MONTHNAME(date), SUM(`in`) as SOMA, date FROM transactions GROUP BY YEAR(date), MONTH(date) 

Aber ich nur zeigen Ergebnis dieses Jahres (2014) müssen, wie kann ich das tun?

+1

Bitte stellen Sie eine separate Frage, wenn Sie ein Problem mit etwas haben – Illidanek

2

Get Monat und Jahr weise Daten aus MySQL-Datenbank:

SELECT MONTHNAME(o_date), YEAR(o_date), SUM(total) 
FROM the_table 
GROUP BY YEAR(date), MONTH(date)