对取款机的数据统计问题
本帖最后由 payp1016 于 2013-10-07 17:05:11 编辑 假设有表字段 ATM表 有字段ATM编号,金额 ,插入时间
上午导入一次,下午导入一次
数据为
ATM编号 金额 插入时间为
test1 10 2013-10-07 08:00
test2 20 2013-10-07 08:00
tstt1 10 2013-10-07 14:00
test2 12 2013-10-07 14:00
tstt1 10 2013-10-08 08:00
test2 5 2013-10-08 08:00
那么test1数据连续3次都是10万,很明显这个机子不正常。就是把这种记录给统计出来。
[解决办法]
这不是很简单嘛,这就是普通的查询,加上一点点判断而已。比如说:
public class ResultType
{
public string ATM;
public DateTime dt;
public decimal money;
}
public IEnumerable<ResultType> Search()
{
using (var db = new SqlCeConnection(engine.LocalConnectionString))
{
db.Open();
var cmd = db.CreateCommand();
cmd.CommandText = "select * from yourTable order by ATM编号,插入时间";
var row = cmd.ExecuteReader();
var founds = new List<ResultType>();
while (row.Read())
{
var obj = new ResultType
{
ATM = (string)row["ATM编号"],
dt = (DateTime)row["插入时间"],
money = (decimal)row["金额"]
};
if (founds.Count > 0)
{
var last = founds.Last();
if (obj.ATM != last.ATM
[解决办法]
obj.money != last.money) //如果当前行与上一行并不重复
founds.Clear();
}
founds.Add(obj);
if (founds.Count >= 3) //最近3条记录(或者更多条记录)的ATM编号和金额都是重复的
yield return obj;
};
}
}