2015-02-09 61 views
0

我的任務是通過Flexnet管理器(flexlm)控制的數據庫中存儲的數據分析許可證使用情況。我需要繪製的是在特定時間段(高水位)使用的併發許可證數量。由於我幾乎沒有SQL或BI工具的經驗,因此遇到了一些麻煩。Cognos/Flexnet管理器SQL - 計算每個時間段的值

我已經拍攝了2個表格,license_eventslicense_features(這些已經過特定用戶和功能的篩選)。然後我創建了一個License_feature表。樣本數據如下所示:

CLIENT_PROJECT FEATURE_NAME LIC_COUNT START_TIME EVENT_TIME DURATION 
BGTV   eclipse  1   1,422,272,438 1422278666 6,228 
BGTV   eclipse  1   1,422,443,815 1422443845 30 
BGTV   eclipse  1   1,422,615,676 1422615681 5 
BGTV   eclipse  1   1,422,631,395 1422631399 4 
BGTV   eclipse  4   1,422,631,431 1422631434 3 
BGTV   eclipse  1   1,422,631,465 1422631474 9 
BGTV   eclipse  1   1,422,631,472 1422631474 2 
BGTV   eclipse  2   1,422,632,128 1422632147 19 
BGTV   eclipse  1   1,422,632,166 1422632179 13 
BGTV   eclipse  6   1,422,632,197 1422632211 14 

我現在需要的是曲線圖是這樣的:

對於每個時間(秒) sum(LIC_COUNT)其中start_time < = time & & end_time> = time

理想情況下,這應該給我在特定秒鐘簽出的併發許可證數量。如果我可以在不同的時間段內獲得這些信息,例如幾小時或幾天,情況會更好。

我該怎麼去做這件事?

+0

你有沒有找到解決你的問題?如果您的問題的任何答案解決了問題,請不要忘記通過點擊答案旁邊的灰色勾號來接受它。如果您以另一種方式解決問題,您可以發佈自己的答案並接受答案,以便將來的訪問者可以通過您的解決方案獲得幫助。 – 2015-03-02 21:38:26

回答

0

使用GROUP BY關鍵字將SUM()分組在一個特定的列上。例如,將LIC_COUNTSUM()分組;

SELECT START_TIME, SUM(LIC_COUNT) AS TOTAL_LIC_COUNT 
FROM YOUR_TABLE 
GROUP BY START_TIME 

現在,SUM()所有LIC_COUNTSTART_TIME之間每個增量END_TIME你需要到別的地方明確指定的那些獨特的價值觀。例如,如果您創建了一個名爲UniqueTimes的表,其中包含最早的START_DATE和最後的END_DATE之間的所有可能值。然後你可以做如下的事情。

SELECT UniqueTime, SUM(LIC_COUNT) AS TotalLicCount 
FROM YOUR_TABLE 
LEFT JOIN UniqueTimes ON (UniqueTime >= START_TIME AND UniqueTime <= END_TIME) 
GROUP BY UniqueTime 

這應該組的行爲每一個獨特的時間,並顯示總所有的每一個具體的時間總和LIC_COUNT

我希望這會有所幫助。