DolphinDB:如何获取每个滑动组的最大值的第一行?

Posted

技术标签:

【中文标题】DolphinDB:如何获取每个滑动组的最大值的第一行?【英文标题】:DolphinDB: How to obtain the first row with the max value of each sliding group? 【发布时间】:2022-01-04 07:43:06 【问题描述】:

我正在根据列中的值是否大于给定阈值对数据进行分组。这里,一个组包含不小于给定阈值的连续数据。我想检索组中包含最大值的第一行,如果组中只有一个值,则应直接保存。 如下图,假设阈值为0.3,我想获取箭头指向的记录:

只能通过写for ..循环来实现吗?

【问题讨论】:

【参考方案1】:

segment函数可以将需要一个一个排序的数据分组到一个组中。

t=table(2021.09.29+0..15 as date,0 0 0.3 0.3 0 0.5 0.3 0.5 0 0 0.3 0 0.4 0.6 0.6 0 as v)
select * from t context by segment(v >= 0.3) having v >=0.3 and v=max(v) limit 1

注意:context by 可以与limit 子句一起使用,以获取前 n 条或后 n 条记录。如果limit后面的数字是正数,则选择前n条记录。反之,如果为负数,则选择最后 n 条记录。如图,同组第2021.10.04行和第2021.10.06行的v值都是0.5。如果我在limit后面写1,就会得到第2021.10.14行的记录。如果我在limit后面写-1,就会得到第2021.10.16行的记录。

【讨论】:

以上是关于DolphinDB:如何获取每个滑动组的最大值的第一行?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写查询以获取 SQL Server 中每个组的第一个条目? [复制]

Postgresql获取具有多列的每个组的最大值[重复]

获取 ActiveRecord 中每个组的最小值/最大值

numpy,获取最大子集

获取每个月 SQL 的组的 MAX 值

Postgres通过以下方式获取组的第一项