簡體   English   中英

滾動時間窗口上的不同計數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM