首页 > 解决方案 > 按日期从两个不同的行计算 SQL 中的总计

问题描述

我有一个表:日期,daily_count 和 total_count,total_count 是空的,必须用 MySQL 计算。日期和daily_count 是已知的,我想从daily_count(today) + total count(yesterday) 计算今天的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'

对于具有超过一年的数据且只有日期和每日计数的表,我怎样才能一次做到这一点。所以必须计算所有的总计数。后来我想将总数更新为 mytbl 中的 total_count。或者我是否有两个写下一年数据的不同日期的所有 365 SQL 行?

标签: mysqlsqlgroup-bysumwindow-functions

解决方案


如果您正在运行 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

推荐阅读