Вычислить сумму в SQL из двух разных строк по дате - PullRequest
0 голосов
/ 29 мая 2020

У меня есть таблица с: date, daily_count и total_count, а total_count пуста и должна быть рассчитана с помощью MySQL. Дата и daily_count известны, и я хочу рассчитать сегодняшнее total_count из daily_count (сегодня) + total count (вчера).

Я могу рассчитать его с помощью:

SELECT t2.daily_count + t1.total_count total 
 FROM mytbl t1, mytbl t2 
 WHERE t1.date = '2020-2-27' AND t2.date = '2020-2-28'

Как я могу это сделать сразу для таблицы с данными за более чем один год и только с датой и ежедневным подсчетом. Итак, все total_counts должны быть рассчитаны. А позже я хочу ОБНОВИТЬ сумму в total_count в mytbl. Или у меня есть две записи всех 365 SQL строк с разными датами для одного года данных?

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Если вы используете MySQL 8.0, вы можете легко сделать это с помощью оконных функций:

select date, daily_count, sum(daily_count) over(order by date) total_count
from mytbl

Вы можете превратить это в запрос update следующим образом (при условии, что date является уникальный столбец):

update mybtl t
inner join (
    select date, sum(daily_count) over(order by date) total_count
    from mytbl
) t1 on t1.date = t.date
set t.total_count = t1.total_count
0 голосов
/ 29 мая 2020

Для накопительной суммы вы можете сделать следующее:

SET @t=0;
SELECT daily_count,@t:=@t+daily_count FROM mytbl ORDER BY mytbl.date;

То же самое можно сделать и с обновлением. Используйте ORDER BY, чтобы обеспечить правильный порядок обработки.

SET @t=0;
UPDATE mytbl SET total_count=@t:=@t+daily_count ORDER BY mytbl.date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...