0

我的任务是通过存储在 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

理想情况下,这应该给我在特定秒签出的并发许可证数量。如果我能在不同的时间段(例如几小时或几天)内获得此信息,那就更好了。

我怎么能这样做呢?

4

1 回答 1

0

使用GROUP BY关键字SUM()在特定列上将它们组合在一起。例如,按 each对SUM()of进行分组;LIC_COUNTSTART_TIME

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

现在,对于SUM()每个LIC_COUNT 增量 START_TIMEEND_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

我希望这有帮助。

于 2015-02-09T16:55:05.453 回答