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种仪表了 可能将来会更多.
迭代器个人认为思路比较清晰 也已经实现了能满足 功能的简单迭代
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种仪表了 可能将来会更多.
迭代器个人认为思路比较清晰 也已经实现了能满足 功能的简单迭代
...全文
相关推荐
C#编写的RSS新闻聚合器
新手用C#编写的RSS新闻聚合器,遇到BUG希望能够多多交流,谢谢
C#告警阈值设置:90%开发者踩过的坑,3步教你精准设置
摘要: 本文探讨C#告警阈值设置的三大核心挑战与解决方案。传统静态阈值(误报率80%)通过动态阈值算法优化至5%,多维度评估将告警准确性从70%提升至92%,实时计算使故障恢复时间从30分钟缩短至2分钟。某电商案例显示,C#定制化告警系统使运维工作量减少60%,客户投诉率下降75%。文章提供动态阈值计算、多维度评估等关键代码实现,为系统稳定性提供可落地的技术方案。
《领域驱动设计C# 2008实现问题.设计.解决方案》.((美)Tim McCarthy)
《领域驱动设计C# 2008实现问题.设计.解决方案》.((美)Tim McCarthy)
MissingLinq:现有 C# linq 实现中缺少的额外 linq 方法
缺少Linq 现有 C# linq 实现中缺少的额外 linq 方法。
《领域驱动设计C# 2008实现问题.设计.解决方案》.((美)Tim McCarthy) [PDF].rar.rar
《领域驱动设计C# 2008实现问题.设计.解决方案》.((美)Tim McCarthy) [PDF].rar.


