我一直在设法解开这个mysql之谜,我想我还不清楚。
我有一个具有以下结构的表(即:
ID | Date | Attr1 | Attr2
1 | 2018-01-31 12:00:00 | 5 | 7
2 | 2018-01-31 12:10:00 | 4 | 3
3 | 2018-01-31 12:20:00 | 0 | 7
...
...
k | 2018-02-01 00:00:00 | 4 | 5
k+1| 2018-02-01 00:10:00 | 1 | 3
...
等等。。。
我试图计算sum(attr1)为s1,sum(attr2)为s2,以及这些值之间的差值(s1-s2)。我通过使用“self-inner-join”(如本文所述)实现了这一点。
我还没有解决的问题是:我得到了所有值的总和,我想在一天发生变化时重置s1和s2。我有几个月的参赛作品,并做它手动对我来说不是一个好的选择。
你有什么建议吗?我很感激你的信息和帮助。我的sql水平是初级中级,我不记得怎么做了。
非常感谢你的帮助。
编辑:
我的预期产出是
ID | Date | Attr1 | Attr2 | S1 | s2 | S1 -S2
1 | 2018-01-31 12:00:00 | 5 | 7 | 5 | 7 | -2
2 | 2018-01-31 12:10:00 | 4 | 3 | 9 | 10 | -1
3 | 2018-01-31 12:20:00 | 0 | 7 | 9 | 17 | -8
...
...
k | 2018-02-01 00:00:00 | 4 | 5 | 4 | 5 | -1
k+1| 2018-02-01 00:10:00 | 1 | 3 | 5 | 8 | -3
...
编辑2:我分享我尝试过但没有成功的东西:
select t1.id, t1.date, t1.attr1, t1.attr2,
t2.id, t2.date, t2.attr1, t2.attr2,
sum(t2.attr1) as cumAttr1,
sum(t2.attr2) as cumAttr2,
sum(t2.attr1) - sum(t2.attr2) as diffAttrs
from table t1
inner join table t2
on t1.date >= t2.date
group by t1.id, t1.attr1
order by t1.date
有了它,我将得到整组行的总和,但我想每天重置“sum”值。
再次感谢您的反馈。
编辑2:
我已经意识到,使用存储过程可以获得相同的结果,而在我这边(facepalm)可以获得更多的顺序。用一次选择来完成每件事是不必要的
向各位致意。谢谢你所做的一切!
2条答案
按热度按时间zynd9foi1#
如果没有看到你最初的询问,我无法确定你的询问有多接近;但这应该是获得指定结果的最简单的自连接查询。
9vw9lbht2#
这就是你想要的吗?
我不明白自连接与此问题有什么关系。
编辑:
你好像想要累积的总和。对于整个问题,我的做法是:
要每天重新启动,只需将
where
条款: