2009-06-02 35 views
34

Una pregunta rápida, que tiene la siguiente tablaMySQL selecto grupo suma por fecha

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

me gustaría sumar el total de cada mes y grupo el total por mes. Por ejemplo, Ene-> 138 Feb-> 88.2 Abr-> 29.84

Cualquier pista al respecto. Gracias

Respuesta

61

Esta solución le dará el nombre del mes como una columna de su conjunto de resultados, seguido por el total según sea necesario.

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

Usted también puede querer añadir el año a la lista de selección -> AÑO (o_date) –

+1

O bien, para obtenerlo en el formato que ha especificado, puede hacer SELECCIONAR CONCAT (MONTHNAME (o_date), '->', SUM (total)) –

+0

¡Muy útil! y puede agregar columnas al grupo al –

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

Eso suponiendo que desea meses en diferentes años agrupan por separado –

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

Como recuerdo de una vida pasada MySQL una consulta como

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

está utilizando el índice en el campo o_date (que por desgracia no me garantizar a YEAR() y MONTH())

Usted tendría que dar formato al campo month y aunque lo más probable es que no se indexarán en cualquier otro sistema de base de datos ...

0

Trate Group BY, como esto: el trabajo

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

Sí para mí de esta manera:

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

pero necesito espectáculo único resultado de este año (2014) ¿Cómo puedo hacer eso?

+1

Haga una pregunta por separado si tiene algún problema con algo – Illidanek

2

Obtener mes y año de datos magos de base de datos MySQL:

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