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:如何获取每个滑动组的最大值的第一行?的主要内容,如果未能解决你的问题,请参考以下文章