gpt4 book ai didi

sql - SQL中的运行差异

转载 作者:行者123 更新时间:2023-12-04 16:47:32 24 4
gpt4 key购买 nike

我有一个 Excel 电子表格,可以使用以下公式轻松计算运行差异:

      A             B           C
1 date status timeInStatus
2 12/26/2010 Good N/A
3 12/27/2010 Bad 24.00 << =(A3-A2)*24
4 12/28/2010 Not-Good 24.00 << =(A4-A3)*24

它用于计算日期差异作为一种运行总计。 (显然这个例子很简单,但真正的日期单元格也包含时间。)

所以在这个例子中很容易看出 24 小时处于“好”状态,24 小时处于“坏”状态,“不好”状态仍然有效。

我在 Access 中有一个等效表,其中包含 equipmentId、日期和状态列。我想用它做的是创建一个与上面的例子做同样事情的查询。只需合计每种状态的时间,即可回答“我在给定状态下花费了多少时间?”这个问题。问题是,我很确定这将需要某种我无法理解的子查询魔法。有什么想法吗?

提前致谢。

最佳答案

这实际上取决于您的数据结构。 table 上只有这些吗?

状态是否总是跟在下一个状态之后,即键为 n 的状态在键为 n + 1 的状态开始之前一直处于事件状态?

如果是这种情况,您需要在 key = key - 1 上将表连接回自身,然后计算日期差异。

SELECT
t1.B as Status,
t1.A as StartDate,
t2.A as EndDate
FROM
Table t1
LEFT OUTER JOIN Table t2 ON t1.Key = t2.Key - 1

编辑:我错过了关于总和的部分。因此,您可以在状态上汇总上述结果,像这样总结日期差异值:

SELECT
t1.B as Status,
SUM(DATEDIFF(h, t2.A, t1.A)) as TotalTime
FROM
Table t1
LEFT OUTER JOIN Table t2 ON t1.Key = t2.Key - 1
GROUP BY t1.B

关于sql - SQL中的运行差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4622625/

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