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%
是从哪里来的?我不能仅仅用你给我们的信息来拼凑。你在用什么数据库?