SQL获取一个时间范围内的所有值-以及之前的值

德克·波尔

我有一个表,每个表ActorId都有一个Value,但是Value会随着时间变化,我们会跟踪这些值的所有变化。

例:

Id  ActorId     Value   Timestamp
--------------------------------
1   5           10      2019-01-05
2   8           8       2019-01-07
3   8           5       2019-01-08
4   5           15      2019-01-11
5   3           12      2019-01-11
6   3           7       2019-01-12
7   3           14      2019-01-14
[...]

如果我们将所有内容都加载到内存中,则很容易随时检查每个Actor值(如果在查询日期之前从未设置过,则为null / undefined)。实际上,我实际上需要将所有这些数据发送到浏览器,并在JavaScript中执行此操作。

问题在于整个表将变得非常大。既有唯一的ActorId,也包括每个ActorId的值更改

通常,我只需要相对较小的ActorIds选择和较短的时间-例如两个月。

我可以做类似的事情:

SELECT *
FROM [ActorValue]
WHERE 
    ActorId IN (5, 8, 12, [...])
    AND Timestamp >= '2019-02-01' 
    AND Timestamp <= '2019-04-01'

并将这些结果发送到JavaScript进行进一步处理。

问题是我也需要在周期开始时使用该值因此,对于每个ActorId,我都需要日期范围内的值,并且在此之前需要一个值更改

在不将所有值更改都加载到内存中的情况下解决此问题的最佳方法是什么。

所以我在理论上寻找的是这样的:

 AND Timestamp >= '2019-02-01' -- plus the entry before this date, grouped by ActorId
戈登·利诺夫

我只会用lead()

SELECT av.*
FROM (SELECT av.*, 
             LEAD(Timestamp) OVER (PARTITION BY ActorId ORDER BY Timestamp) as next_timestamp
      FROM ActorValue av
      WHERE ActorId IN (5, 8, 12, [...])
     ) av
WHERE next_Timestamp >= '2019-02-01' 
      Timestamp <= '2019-04-01';

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL查询以获取在一个时间范围内包含多个实例的值

在指定的时间范围之前获取最后一个值

在SQL SERVER中获取日期范围内的列的第一个非null值的最快方法

BigQuery 获取范围内的所有值

Excel:如何获得一个动态公式,该公式可以显示一个范围内的所有唯一值?

查找范围内的所有值并在下一个单元格中设置另一个 cell.value

ORACLE 获取一个 varchar2 字段范围内的更大和更低的值

Pyspark - 循环和范围内 - 仅获取最后一个值

获取范围内的下一个可用值

创建一个在一定范围内具有随机值的数组

IF和AND检查范围内的一个值

更有效的方法来计算一个时间间隔内值的数量?

Python:如果我有一个元组 (A,B),我如何根据 A 值取范围内所有 B 值的平均值?

在一个查询中,MySQL SELECT值在范围内,而下一个值在范围内

SQL - 如何将具有一系列值的表转换为具有该范围内所有数字的另一个表?

如何用该时间戳的所有观测值的平均值替换一个时间戳的值

获取下一个时间戳值

是否有一个函数来检索一个范围内可用的不同值的数量?

计算前一个时间段内重复值的数量

如何将一个范围内的值插入到另一个范围内

从python中的下一个时间值减去前一个时间值

获取范围内最后一个非空单元格的列号(如果值不是唯一的)

在继续之前检查范围内的值

Pandas 在一个时间索引上合并多个数据帧,并具有来自所有其他索引的最新值

从带有时间戳的一个表中获取最大值,并从另一个表中获取一个时间段的3秒

如何确定一个值是否在一个范围内?

Pandas groupby,其中一个组值在一个范围内

如何在一个范围内限制一个值?

如何获取值等于特定值的范围内的第一个单元格