[英]Distinct count on a rolling time window
我想計算最近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用於InfoSphere BigInsights v3.0。 結果查詢可以使用任何db2 Olap Windows函數,但count(distinct catalogNumb)OVER()...除外,這是我的db2版本不支持的。
除了計數,我可能還需要在catalogNumb和其他屬性上使用其他聚合函數(avg,sum ...)。
對於任何反饋,我們都表示感謝。
True Db2不支持將計數作為OLAP功能使用,但是有一個簡單的解決方法:
您可以使用
density_rank
相反-密集排名中的最高數字(max)是您的計數!
您可以嘗試如下操作:
select ...
from mytable
where starttime between current_time - 5 minutes and current_time
這將獲取最近5分鍾的所有行。 5
可以是變量。 然后count()或sum()或average()行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.