gpt4 book ai didi

mysql - 我如何在 MySQL 嵌套选择查询中 "reset"变量(SUM(x) 作为变量)

转载 作者:行者123 更新时间:2023-11-29 17:46:42 25 4
gpt4 key购买 nike

我一直在设法解决这个 MySQL-Riddle,但我认为这对我来说还不清楚。

我有一个具有以下结构的表(即):

    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)。我通过使用“自内连接”(如所述 here )实现了它。

我还没有解决的问题是:我得到了值的全部(whole)SUM,并且我想在日期改变时重置这个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

这样,我将获得整组行及其总和,但我想每天重置“总和”值。

再次感谢您的反馈。

编辑2:

我已经意识到,使用存储过程可以获得相同的结果,并且我这边的顺序多一点(捂脸)。 *没有*必要尝试用一个 SELECT 来完成所有事情

最诚挚的问候,大家。感谢您所做的一切!

最佳答案

这是你想要的吗?

select date(date), sum(attr1), sum(attr2),
sum(attr1) - sum(attr2) as diff
from t
group by date(date);

我不明白自连接与这个问题有什么关系。

编辑:

您似乎想要累积总和。对于整个问题,我的解决方法是:

select t.*,
(select sum(tt1.attr1)
from t tt1
where tt1.date <= t.date
) as running_attr1,
(select sum(tt2.attr2)
from t tt2
where tt2.date <= t.date
) as running_attr2
from t;

要每天重新启动,您只需添加到 where 子句:

select t.*,
(select sum(tt1.attr1)
from t tt1
where date(tt1.date) = date(t.date) and tt1.date <= t.date
) as running_attr1,
(select sum(tt2.attr2)
from t tt2
where date(tt2.date) = date(t.date) and tt2.date <= t.date
) as running_attr2
from t;

关于mysql - 我如何在 MySQL 嵌套选择查询中 "reset"变量(SUM(x) 作为变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49756475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com