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

SQL-计算每个设备每月的活动分钟数,sql,datetime,distinct,Sql,Datetime,Distinct,我正在寻求一些关于如何计算特定设备每月活动分钟数(以百分比表示)的输入/建议 “我的表”包含以下列: 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 我希望每月生成一份报告,显示设备处于活动状态和“正在构建”的当月百分比。一分钟内的任何构建都可以被视为处于活动状态,但我

我正在寻求一些关于如何计算特定设备每月活动分钟数(以百分比表示)的输入/建议

“我的表”包含以下列:

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
我希望每月生成一份报告,显示设备处于活动状态和“正在构建”的当月百分比。一分钟内的任何构建都可以被视为处于活动状态,但我需要考虑每月的不同天数和各种(100+)不同的设备

例如,对于11月份,我希望能够看到:

device_id      |     Utilization
A4207B23-C984     33.2
76D53271-FD34     21.9
这将对应于“A4”设备在当月33.2%的分钟内至少有一次构建。所以11月有30天24小时60分钟=14342分钟

我会使用类似于:

distinct(left(build_date,16))
然后通过使用DATEDIFF表示月份天数的查询调用的设备来缩小范围


任何建议或想法都会非常有帮助。谢谢大家。罗杰

既然您提到了DATEDIFF,我想您可能正在使用SQL Server,所以下面是一段SQL,它可以在一分钟内获取总月份数,您需要将getdate()替换为build_date

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项的问题,并将后者除以前者,得到您的利用率


希望这对您有所帮助,因为您提到的是DATEDIFF,我想您可能正在使用SQL Server,因此下面是一段SQL,它可以在一分钟内获取总月份数,您需要将getdate()替换为build_date

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项的问题,并将后者除以前者,得到您的利用率


希望这有帮助

第一台设备的
33.2%
从哪里来?我不能仅仅用你给我们的信息来拼凑。你用的是什么数据库?第一台设备的
33.2%
是从哪里来的?我不能仅仅用你给我们的信息来拼凑。你在用什么数据库?