滚动时间窗口上的不同计数



我想计算过去 X 分钟内出现的不同目录号的数量。这通常称为滚动时间窗口。

例如,如果我有:

row        startime            orderNumber    catalogNumb
1        2007-09-24-15.50       o1              21    
2        2007-09-24-15.51       o2              21
3        2007-09-24-15.52       o2              21
4        2007-09-24-15.53       o3              21
5        2007-09-24-15.54       o4              22
6        2007-09-24-15.55       o4              23
7        2007-09-24-15.56       o4              21
8        2007-09-24-15.57       o4              21

例如,如果我想在最后 5 分钟内获取此值(5 只是可能的值之一(,则输出应为:

row        startime            orderNumber    catalogNumb    countCatalog
1        2007-09-24-15.50       o1              21                 1
2        2007-09-24-15.51       o2              22                 2
3        2007-09-24-15.52       o2              23                 3
4        2007-09-24-15.53       o3              24                 4
5        2007-09-24-15.54       o4              21                 4
6        2007-09-24-15.55       o4              21                 4 
7        2007-09-24-15.56       o4              21                 4
8        2007-09-24-15.57       o4              21                 3

我正在使用Big SQL进行信息领域BigInsights v3.0。生成的查询可以使用任何 db2 Olap 窗口函数,但计数(不同的目录麻木(超过((...我的 DB2 版本不支持此功能。

除了计数之外,我可能还需要在 catalogNumb 和其他属性上使用其他聚合函数(avg、sum...(。

任何反馈将不胜感激。

True Db2 不支持将计数不同为 OLAP 函数,但有一个简单的解决方法:

您可以使用

dense_rank

相反 - 密集等级的最高数字(最大值(是你的计数不同!

你可以尝试这样的事情:

select ...
  from mytable
  where starttime between current_time - 5 minutes and current_time

这将获取过去 5 分钟的所有行。 5可以是变量。然后对行进行计数(( 或 sum(( 或 average((。

相关内容

  • 没有找到相关文章

最新更新