我想根据某些条件获取站点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/