views:

3419

answers:

6

Quick question, I have the following table

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

I would like to add up the total for each month and group the total by month. So for instance Jan-> 138 Feb-> 88.2 Apr-> 29.84

Any clues about it. Thanks

A: 
select year(o_date), month(o_date), sum(total)
from table
group by year(o_date), month(o_date);
Todd Gardner
That's assuming you want months in different years grouped seperately
Todd Gardner
A: 
SELECT SUM(total)
FROM table
GROUP BY MONTH(o_date)
James Skidmore
+6  A: 

This solution will give you the month name as a column of your resultset, followed by the total as required.

SELECT MONTHNAME(o_date), SUM(total) 
FROM theTable
GROUP BY YEAR(o_date), MONTH(o_date)
Simon Fox
You may also want to add the year to the select list -> YEAR(o_date)
Simon Fox
Or, to get it in the format you specified, you can do SELECT CONCAT(MONTHNAME(o_date), '-> ', SUM(total))
James Skidmore
+1  A: 

As I recall from a past MySQL life a query like

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

is using the index on the o_date field (which unfortunately I would not guarantee for YEAR() and MONTH()).

You would have to format the month field though and this will most likely not be indexed on any other database system...

Sorin Mocanu
A: 

don't forget to sort

ORDER BY SUM(total) DESC
Neo
A: 

how to sum between two difference date

vikas