按日期计算两个不同行的sql总计

bmvo0sr5  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(403)

我有一个表:date,daily\u count和total\u count,total\u count是空的,必须用mysql计算。日期和每日计数是已知的,我想从每日计数(今天)+总计数(昨天)计算今天的总计数。
我可以用以下公式计算:

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'

对于一个包含一年以上数据且只有date en daily count的表,如何一次这样做。所以所有的总数都要计算出来。稍后我想在mytbl中将总数更新为total\u count。或者我是否有两条写下一年数据中所有365条不同日期的sql行?

bnlyeluc

bnlyeluc1#

如果您运行的是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
pnwntuvh

pnwntuvh2#

对于累计总和,您可以执行以下操作:

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;

相关问题