我想根据某些条件获取站点ID的计数。条件如下:


每隔5分钟,我们会将数据上传到db。
如果我们在6分钟内未收到任何数据,我们将认为缺少1个数据字符串。
这样,如果我们在过去1小时内没有收到数据,则可以说缺少10个数据字符串


我想计算两个日期之间每个站点ID缺少字符串的计数。

样本数据库:

Sl_No  Site_Id  Uploaded_Data  Uploaded_Date
-----  -------  -------------  -------------
 1      ST001       xyz        4/30/2015 5:47:25 PM
 2      ST002       xyz        4/30/2015 5:47:25 PM
 3      ST003       xyz        4/30/2015 5:47:25 PM
 4      ST001       xyz        4/30/2015 5:52:36 PM
 5      ST002       xyz        4/30/2015 5:53:20 PM
 6      ST003       xyz        4/30/2015 5:54:25 PM
 7      ST001       xyz        4/30/2015 5:57:15 PM
 8      ST002       xyz        4/30/2015 5:58:25 PM
 9      ST003       xyz        4/30/2015 6:00:25 PM
 10     ST001       xyz        4/30/2015 6:02:05 PM
 11     ST002       xyz        4/30/2015 6:03:30 PM
 12     ST003       xyz        4/30/2015 6:05:25 PM


基于上述条件,我必须获得如下所示的计数:

SiteID Count
------ -----
ST001   0
ST002   1
ST003   2


请帮助我找到合适的解决方案。我是sql和c#的新手。

最佳答案

您可以使用Group By子句通过SQL获得结果。

SELECT SiteID, Count(*) as Count FROM Table WHERE Uploaded_Date BETWEEN Date1 AND Date2


这将根据您的条件为您提供SiteID列表和计数。此外,如果您需要找到丢失的计数,可以进行减法以找到丢失的计数。

例如。如果您尝试查找一个小时的丢失计数,并且您的上传间隔是5分钟,那么您可以通过简单的数学运算Total Minutes / 5知道该计数应该是12。使用12的计数减去计数表中可用。

SELECT SiteID, (DATEDIFF ( minute , startdate , enddate ) / 5) - Count(*) as MissingCount FROM Table WHERE Uploaded_Date BETWEEN startdate AND enddate

关于c# - 如何计数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29983212/

10-12 16:58
查看更多