У меня есть таблица с двумя столбцами с транзакциями, в которых сохраняется время изменения (unix_time) и значение изменения.Получить баланс операций за каждый месяц
create table transactions (
changed int(11),
points int(11)
);
insert into transactions values (UNIX_TIMESTAMP('2014-03-27 03:00:00'), +100);
insert into transactions values (UNIX_TIMESTAMP('2014-05-02 03:00:00'), +100);
insert into transactions values (UNIX_TIMESTAMP('2015-01-01 03:00:00'), -100);
insert into transactions values (UNIX_TIMESTAMP('2015-05-01 03:00:00'), +150);
Чтобы получить текущий баланс вы должны суммировать все значения и получить баланс из прошлого вам нужно суммировать, если время изменения для этого значения меньше просил, как:
select
sum(case when changed < unix_timestamp('2013-12-01') then
points
else
0
end) as cash_balance_2013_11,
...
так для каждого месяц должен быть отдельный код SQL. Я хотел бы иметь код SQL, который даст мне балансы на все месяцы. (Например, с фиксированной датой до сих пор)
EDIT:
Вы можете пополнить счет с интервалом в http://stackoverflow.com/questions/4342370/grouping-into-interval-of-5-minutes-within-a-time-range –
@ Horst Walter: Насколько я могу себе представить, это даст мне изменения в течение одного месяца. Чтобы получить баланс, вам нужно суммировать все предыдущие значения не только с данного месяца. – Pueblo