我想计算过去 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((。