2016-02-07 5 views
0

У меня есть таблица с множеством записей, состоящая из дат и числа.MySQL - SUM() старые записи

Например:

07.02.2016 - 12 
06.02.2016 - 48 
05.02.2015 - 24 

... и так далее.

Теперь мне нужно суммировать все значения старше 2 месяцев. Например, 3-я запись (05.02.2015) будет добавлена ​​ко второму (06.02.2016), а вторая должна получить значение 72, а третье - удалить.

Я хотел бы знать, есть ли способ сделать это только в mysql?

+0

Возможный дубликат [Создать сумму ROLLING в течение периода времени в mysql] (http://stackoverflow.com/questions/19213633/create-a-rolling-sum-over-a-period-of-time- в-MySQL) – ekstroem

ответ

0

Вместо того, чтобы писать код для вас, я хотел бы просто дать вам несколько советов:

  • Определить, какие строки старше 2 месяцев и суммировать их.

    select sum(number) from table where date > curdate() + interval 2 months 
    

    or sth. подобный сделаю.

  • Выберите максимум. дата записей, которые меньше или равны «сейчас + 2 месяца».

  • Обновление этой строки со значением с шага 1.

  • Удалить строки из шага 1.

См here подробную информацию о функциях даты в MySQL.

Это может быть сделано в двух операциях (один для шагов 1-3, один для удаления).