Сумма значений из таблицы по дате - PullRequest
0 голосов
/ 20 октября 2019

Я застрял с проблемой MySQL / MariaDB. Я нашел несколько решений для PostgreSQL, но, к сожалению, я не смог преобразовать его в MySQL.

У меня есть таблица с датами и значениями, и я хотел бы суммировать их по дате.

Пример:

date       | value
2019-08-01 |  50
2019-09-01 |  30
2019-10-01 |  20

Результат запроса должен складывать все значения в дате.

date       | value
2019-08-01 |  50
2019-09-01 |  80
2019-10-01 | 100

Может кто-нибудь помочь мне с этим SQL? Спасибо

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Всегда используйте функции, доступные в этом случае, функции Windows https://mariadb.com/kb/en/library/window-functions/, но вы можете использовать коррелированный подзапрос

Drop table if exists t;
create table t
(dt date, amount int);
insert into t values
('2010-10-01',30),
('2010-11-01',20),
('2010-12-01',50);

select t.*,(select sum(amount) from t t1 where t1.dt <= t.dt) cumamount
from t;

+------------+--------+-----------+
| dt         | amount | cumamount |
+------------+--------+-----------+
| 2010-10-01 |     30 |        30 |
| 2010-11-01 |     20 |        50 |
| 2010-12-01 |     50 |       100 |
+------------+--------+-----------+
3 rows in set (0.00 sec)
0 голосов
/ 20 октября 2019

Вы можете использовать SUM в качестве оконной функции для получения промежуточного итога за каждую дату. Вы также можете удалить дубликаты строк с помощью DISTINCT:

SELECT DISTINCT `date`, SUM(`value`) OVER (ORDER BY `date` ASC) AS `value`
FROM example
ORDER BY `date`

демо на dbfiddle.uk

...