2009-06-02 3 views
34

Domanda rapida, ho la seguente tabellamysql gruppo selezionato somma per data

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

vorrei aggiungere il totale per ogni mese e di gruppo il totale per mese. Quindi, per esempio Gen-> 138 Feb-> 88,2 Apr-> 29,84

Eventuali indizi a riguardo. Grazie

risposta

61

Questa soluzione vi darà il nome del mese, come una colonna del gruppo di risultati, seguito dal totale come richiesto.

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

Si consiglia inoltre di aggiungere l'anno per la lista di selezione -> Anno (o_date) –

+1

Oppure, per ottenerlo nel formato che hai specificato, puoi fare SELECT CONCAT (MONTHNAME (o_date), '->', SUM (totale)) –

+0

Molto utile! e puoi aggiungere colonne per raggruppare per –

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

Questo è supponendo che si desidera mesi in diversi anni raggruppate separatamente –

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

Come ricordo di un passato di vita MySQL una query come

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

sta utilizzando l'indice sul campo o_date (che purtroppo non garantirebbe per YEAR() e MONTH()).

Si dovrà formattare il campo month e anche se questo non più probabile essere indicizzati su qualsiasi altro sistema di database ...

0

Prova Group BY, in questo modo: il lavoro

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

Sì per me in questo modo:

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

Ma ho bisogno solo di mostrare il risultato di quest'anno (2014) come posso farlo?

+1

Per favore fai una domanda a parte se hai un problema con qualcosa – Illidanek

2

Get mese e anno saggi dati dal database MySQL:

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