gpt4 book ai didi

MySQL 只计算同一组中行的行差异

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

我有下表(称之为反式):

issue_id:   state_one:  state_two:  timer:      
1 A B 1
1 B C 3

2 A B 2
2 B C 4
2 C D 7

我希望获得连续行之间“计时器”的差异,但仅限于具有相同 issue_id 的行。

预期结果:

issue_id:   state_one:  state_two:  timer:    time_diff:                 
1 B C 3 2

2 B C 4 2
2 C D 7 3

当计算两行之间的时间差时,我希望结果显示在后面一行的旁边。

如果表中只有一个按时间排序的问题,则以下代码可以正常工作:

select 
X.issue_id,
X.timer as X_timer,
Y.timer as Y_timer,
(X.timer - Y.timer) as time_diff
from trans X
cross join trans Y
where Y.timer in (
select
max(Z.timer)
from trans Z
where Z.timer < X.timer);

我想推广这种方法来处理许多具有时间顺序状态更改的问题。

我的想法是添加以下条件,但它仅在连续事件属于同一问题时才有效(现实世界中并非如此):

... where Z.timer < X.timer)
and X.issue_id = Y.issueid;

问题:在 MySQL 中,我可以迭代地执行此操作(即计算 issue_id=1 的差异,然后计算 issue_id=2 的差异,依此类推)吗?函数还是子查询?

其他策略?约束:我有只读权限。非常感谢您的帮助!

编辑:我添加了预期的输出,在我的示例表中添加了一行,并进行了说明。

最佳答案

select 
issue_id, (MAX(timer)-MIN(timer)) as diff from trans
group by issue_id

关于MySQL 只计算同一组中行的行差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37153107/

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