假如某个表只有累计或者只有每天的数据需要求另外一种数据
数据表(假如表的后2行不是同时存在)
id | date | monv | dayv |
---|---|---|---|
1 | 2023-7-14 | 23 | 23 |
2 | 2023-7-15 | 26 | 3 |
3 | 2023-7-16 | 30 | 4 |
4 | 2023-7-17 | 50 | 20 |
-- 如果数据表中的date是20230706这样的字符串,可以用str_to_date函数转换
-- 从累计求每一天的数据
SELECT zb.date,IFNULL(zb.monv,0)-IFNULL(cb.monv,0) as dayv
FROM TEST_WJG zb
LEFT JOIN TEST_WJG cb
ON zb.date=DATE_ADD(cb.date,interval 1 day)
?
-- 根据每一天的数据求到每一天的累计①
SELECT zb.date,(SELECT SUM(cb.dayv) from TEST_WJG cb WHERE zb.date>=cb.date) as monv
FROM TEST_WJG zb
?
-- 根据每一天的数据求到每一天的累计②
SELECT zb.date,SUM(cb.dayv) as monv
FROM TEST_WJG zb
left join TEST_WJG cb ON zb.date>=cb.date
group by zb.date
date | dayv |
---|---|
2023-7-15 | 3 |
2023-7-16 | 4 |
2023-7-17 | 20 |
2023-7-14 | 23 |
从每一天计算累计到每一天的数据结果展示
date | monv |
---|---|
2023-7-14 | 23 |
2023-7-15 | 26 |
2023-7-16 | 30 |
2023-7-17 | 50 |