我有一个这样的数据库表(省略了其他列)
videojs('videoPlayer', {
controlBar: {
fullscreenToggle: false
}
});
我想从显示此内容的表中创建一个数据库视图
date | change
2018/10/10 | +8
2018/10/31 | -5
2018/11/01 | +3
2018/11/03 | -2
累计量,即前一个条目的累计量(按日期排序)加上/减去当前条目的变化量
是否存在一种便宜的方法(就计算而言)可以创建这种视图?
答案 0 :(得分:0)
尝试此查询。
SELECT t1.Date, t1.Change, SUM(t2.Change) AS Cumalative
FROM YourTable t1
INNER JOIN YourTable t2 on t1.Date >= t2.Date
GROUP BY t1.Date, t1.Change
ORDER BY t1.Date
答案 1 :(得分:0)
在MySQL 8+中,您可以执行以下操作:
select t.*,
sum(change) over (order by date) as cumulative
from t;
在早期版本中,我建议使用相关子查询:
select t.*,
(select sum(t2.change) from t t2 where t2.date <= t.date) as cumulative
from t;
这将在视图中起作用,并且可以利用(date, change)
上的索引。
此版本可能不如在旧版本的MySQL中使用变量有效,但它应该比join
/ group by
解决方案要好。