我的任务是通过存储在由Flexnet管理器(flexlm)控制的数据库中的数据来分析许可证利用率。我需要绘制的图表是特定时间段内使用的并发许可证数量(高水位线)。我这样做有些麻烦,因为我对SQL或BI工具的经验很少。
我已经使用了2个表license_events
和license_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 :(得分:0)
使用GROUP BY
关键字将SUM()
分组到特定列中。例如,按SUM()
分组LIC_COUNT
START_TIME
;
SELECT START_TIME, SUM(LIC_COUNT) AS TOTAL_LIC_COUNT
FROM YOUR_TABLE
GROUP BY START_TIME
现在,在 SUM()
和LIC_COUNT
之间的每次增量中START_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
的总和。
我希望这会有所帮助。