как группировать строки MySql на основе месяца?

У меня есть таблица с datetime (формат: «Ymd H: i: s») поле «created» и поле «amount» (целое) в каждой строке. Теперь я хочу узнать месячную сумму «сумма» в прошлом году. Как я могу это сделать?

РЕДАКТИРОВАТЬ

Я сделал редактирование, чтобы прояснить актуальную проблему. поэтому в основном я хочу знать общую сумму в каждом месяце, но только за последний год.

EDIT2

В прошлом году – последние 365 дней. Итак, где-то я должен рассмотреть «текущий день»?

EDIT3

Мой плохой, на самом деле последний год – последние 12 месяцев. Таким образом, количество дней будет между 336 и 365.

Попробуйте это (обновляется, чтобы ответить на ваш «edit3»):

SELECT YEAR(created) as year, MONTH(created) AS month, SUM(amount) AS total_amount FROM table1 WHERE created BETWEEN DATE(NOW()) - INTERVAL (DAY(NOW()) - 1) DAY - INTERVAL 11 MONTH AND NOW() GROUP BY YEAR(created), MONTH(created) ORDER BY YEAR(created), MONTH(created); 

Пример результата (при запуске в апреле 2010 года):

 year month total_amount 2009 5 26 2010 1 20 

Также обратите внимание, что месяцы без записей не будут возвращаться вообще (а не возвращаться с total_amount = 0).

Данные испытаний:

 CREATE TABLE table1 (created datetime NOT NULL, amount INT NOT NULL); INSERT INTO table1 (created, amount) VALUES ('2010-01-01 13:56:23', 5), ('2010-01-04 13:56:23', 15), ('2009-05-04 13:56:23', 26); 

Это возвращает счет и общую сумму за прошлый год:

 SELECT MONTH(created) as month_updated, COUNT(created) as month_updates, SUM(amount) as month_total FROM table WHERE created BETWEEN DATE_ADD(NOW(), INTERVAL -1 YEAR) AND NOW() GROUP BY MONTH(created) 

Или, если вы имеете в виду только 2009 год:

 SELECT MONTH(created) as month_updated, COUNT(created) as month_updates, SUM(amount) as month_total FROM table WHERE created BETWEEN '2009-01-01 00:00:00' AND '2009-12-31 23:59:59' GROUP BY MONTH(created) 
 SELECT count(some_row) AS or_whatever FROM your_table GROUP BY MONTH(update); 

Чтобы быть более конкретным (с вашим обновлением):

 SELECT SUM(amount) FROM table_name GROUP BY MONTH(created);