2009-06-02 20 views
34

szybkie pytanie, mam poniższej tabelimysql wybrana grupa suma według daty

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

Chciałbym dodać sumę za każdy miesiąc i grupy łącznej przez miesiąc. Na przykład: Jan-> 138 luty-> 88,2 kwietnia-> 29,84

Wszelkie wskazówki na ten temat. Dzięki

Odpowiedz

61

To rozwiązanie daje nazwę miesiąca jako kolumna swojej wynikowego, a następnie łącznie jako wymagane.

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

Można również dodać rok do listy select -> rok (o_date) –

+1

Lub, aby uzyskać go w określonym formacie, możesz wybrać SELECT CONCAT (MONTHNAME (o_date), '->', SUM (total)) –

+0

Bardzo przydatne! i możesz dodać kolumny do grupy przez –

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

Zakładając chcesz miesięcy w różnych latach zgrupowane osobno –

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

Jak pamiętam z poprzedniego życia MySQL kwerendy jak

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

używa indeksu na polu o_date (co niestety nie zagwarantuje na YEAR() i MONTH()).

Trzeba by sformatować pole month choć i to najprawdopodobniej nie być indeksowane na żadnym innym systemie baz danych ...

0

Spróbuj Group BY, podobnie jak to: praca

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

Yea dla mnie w ten sposób:

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

Ale muszę tylko pokazać wynik tego roku (2014), jak mogę to zrobić?

+1

. Jeśli masz problem z czymś, zadaj osobne pytanie. – Illidanek

2

Get miesiąc i rok mądry dane z bazy danych MySQL:

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