mysql - 按日期从两个不同的行计算 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 行?
解决方案
如果您正在运行 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
推荐阅读
- laravel - Laravel 5 通过哈希令牌从 resetpasswordlog 检索用户电子邮件
- php - 获取碳中两个日期之间的所有月份名称
- android - 无法再找到 Gradle 签名.properties
- ios - 在 Arkit SceneView 中增加线条的粗细
- android - 如何在 android 中的所有尺寸的图像视图上绘制点,如下图所示?
- python - 将熊猫数据写入csv
- xml - 如何在.NET中将xml文件转换为html
- ios - 界面生成器中的目标特定值
- oracle - Oracle 12c docker 容器——上传 tnsnames.ora
- linux - SFTP 停止打印消息“正在上传
到/路径/到/文件”