SQL - 计算每台设备每月的活动分钟数

时间:2015-12-23 02:31:20

标签: sql datetime distinct

我正在寻求一些输入/建议,说明我可以计算特定设备每月有效分钟数的百分比。

我的表格有列:

bundle.js

我想每月生成一份报告,显示设备处于活动状态和“构建”的月份百分比。一分钟内的任何构建都可以被视为活动,但我需要考虑月份的不同日期和各种(100+)差异设备。

举个例子,11月份我很乐意看到:

device_id      |     build_date
A4207B23-C984     2015-05-28 07:33:29.6980000 -04:00
76D53271-FD34     2015-05-29 15:51:19.0000000 -04:00

这对应于在该月的33.2%的分钟期间具有至少一个构建的'A4'设备。所以十一月有30天,24小时,60分钟= 14,342独特的分钟。

我会使用类似的东西吗?

device_id      |     Utilization
A4207B23-C984     33.2
76D53271-FD34     21.9

然后按设备缩小范围,由使用DATEDIFF的查询调用该月份的天数?

任何指针或想法都会有很大帮助。谢谢大家。罗杰

1 个答案:

答案 0 :(得分:0)

由于您引用了DATEDIFF,我认为您可能正在使用SQL Server,因此下面是一段SQL,它可以在一分钟内获得总数,您需要通过build_date替换getdate()

select datediff(mi, convert(varchar, datepart(mm, getdate())) + '/01/' + convert(varchar, datepart(yyyy, getdate()))
  ,eomonth(getdate())) AS MinutesInMonth
  ,device
  ,datepart(mm, getdate()) as BuildMonth
  from table 

下一个条款将为您提供一个月内的总活动分钟数

select count(datepart(mi, getdate())) AS ActiveMinutesInAMonth
      ,datepart(mm, getdate()) as BuildMonth
      ,device          
  from table 
 group 
    by datepart(mm, getdate())
      ,device

然后我认为这是基于设备和月加入上述2并将后者除以前者并获得利用率的问题。

希望这有帮助