c# 按时间聚合的实现问题
有两种仪表:A和B
A数据库字段:id isOpen sttime gid
B数据库字段:id isOpen sttime gid
没什么原因 在数据库里就是分了两个表(实际上有更多个)
isOpen 是记录开关的bit型字段 sttime 是记录时间的datetime字段,gid是地理区域id
要解决的问题是在一个时间段内(小时,天,或月),该仪表的负载率(假设100个仪表,开了35个,则是35%)
本人一开始思路 在使用MSSQL的聚合函数datepart 可以完美按时间段统计出负载率
但由于这是不同的两种仪表,而实际用途中 要根据地理区域进行统计(同一地理区域内可能同时有这两种仪表)
故表A的统计结果与表2的统计结果不能简单聚合:假设A有128个,开了32个,B有64个开了8个
数据库聚合出的是A:25% B:12.5%
这两个数据无法直接相加除2,你懂的.
现在我已经实现了一个简单的选择迭代器,可以吧A,B的数据都取出来
但在分组上没有思路(C#实现类似MSSQL的datepart和group by功能)
故来求助下大家
有个要求,不能使用存储过程(存储过程也要跨表,花时间实现个迭代器 就是为了不使用存储过程)
在加入新仪表的时候 改存储过程太麻烦了 实际中已经有7 8种仪表了 可能将来会更多.
迭代器个人认为思路比较清晰 也已经实现了能满足 功能的简单迭代