计算时间记录之间的增量(LibreOffice Base)

Posted

技术标签:

【中文标题】计算时间记录之间的增量(LibreOffice Base)【英文标题】:Calculate delta between chronological records (LibreOffice Base) 【发布时间】:2014-05-12 18:22:01 【问题描述】:

我对 SQL 还很陌生,我面临的这个问题我无法用我目前的知识解决(几天之内成为 SQL 专家几乎是不可能的)。

假设我有一个以下简单的表格:

ID  Date        Counter
1   03/25/14    291.5
2   03/25/14    310
3   03/25/14    270.9
4   03/25/14    320
1   04/25/14    293
2   04/25/14    311
3   04/25/14    278.3
4   04/25/14    322.1

基本上每个月都会为每个用户添加一些计数器的读数。我希望能够创建一个查询来计算计数器值与上个月值相比的增量。结果应该看起来像这样:

ID  Date        Counter  PrevMonthDelta
1   04/25/14    293      1.5
2   04/25/14    311      1
3   04/25/14    278.3    7.4
4   04/25/14    322.1    2.1

我目前正在使用默认 HSQLDB 格式的数据库在 LibreOffice Base 中进行试验,但我认为这在其他 SQL DB 中应该也能正常工作。

提前致谢!

【问题讨论】:

【参考方案1】:

一般而言,您可以将表连接到自身,以使生成的连接表具有两个月的值。然后,您可以对这些值执行计算。类似的东西

SELECT ID, T2.DATE, T2.COUNTER - T1.COUNTER FROM T T1, T T2 WHERE T1.ID = T2.ID AND YEAR (T1.DATE) = YEAR(T2.DATE) AND MONTH(T1.DATE) + 1 = MONTH (T1.DATE)

如果条件需要涵盖年末,请使用以下内容:

AND YEAR (T1.DATE) + (MONTH(T1.DATE) / 12) = YEAR(T2.DATE) AND (MONTH(T1.DATE) MOD 12) + 1 = MONTH (T1.DATE)

如果您的实际列名区分大小写,请使用双引号名称,例如“Counter”。

【讨论】:

谢谢@fredt,会试试的。唯一让我担心的是年份变化时的极端情况。

以上是关于计算时间记录之间的增量(LibreOffice Base)的主要内容,如果未能解决你的问题,请参考以下文章

计算数据框中记录之间的增量时间

在 Grafana 中创建警报 - 基于 2 个时间序列之间的增量

从没有时间戳列的数据库表中增量获取两个日期之间的记录

LibreOffice Base 子窗体显示不相关的记录

OpenOffice/LibreOffice 计算超链接

获取 Hive 分区之间的增量更改