首页 新闻 会员 周边

web开发的数据统计的项目 数据库大数据问题

0
悬赏园豆:200 [待解决问题]

近期碰到一个web开发的数据统计的项目,统计的样本是 某种彩票的开奖数据。
具体情况如下:在SQL server 2005的数据库中有个表,表里的数据大约有 20多万条,并且在不断更新,可能频率是5分钟一期的那种,字段就为两个字段,期数(例如:120910001),号码(例如: 1,3,2,5,8)格式统一,现在想统计某种号码形态的开出次数、最大遗漏值、当前的遗漏值、平均的遗漏值。
举例如下:有一组号码:

期数        号码
120910001  9,3,9,7,3
120910002  5,4,7,2,1
120910003  3,1,7,0,5
120910004  7,3,0,2,3
120910005  9,8,5,8,4
120910006  7,5,4,3,0
120910007  7,7,9,6,6
120910008  7,6,1,4,6
120910009  2,3,6,9,0
120910010  7,8,2,0,3
120910011  0,9,6,6,2 
120910012  2,8,9,8,5
120910013  0,3,3,9,8


如果我计算个位号码3的话,得出来的结论是 出现期数是3次 遗漏值分别是3,6,3,最大遗漏值是6,当前遗漏是3,平均遗漏是4

我们现在的做法是对这组号码进行扫描,然后进行计算,但是这仅限于很少一部分数据,比如上千行。

但数据一多,比方说20多万条数据就没办法计算了,请教有什么办法解决这个问题?

头头哥的主页 头头哥 | 初学一级 | 园豆:2
提问于:2012-09-11 16:39
< >
分享
所有回答(3)
0

现在你sql怎么写的,号码分成5个字段存可能会快点

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-11 16:45

我现在的做法是没写sql 语句,只是将号码装载进记录集,比方说1000组数据,然后通过C#的程序,每行进行分析,记录,勉强能够达到效果,但这仅限于 1000条左右的数据哦,如果数据一多,比方说5000条,就会很慢很慢了,也不切实际了,更别说20万条以上的数据了

支持(0) 反对(0) 头头哥 | 园豆:2 (初学一级) | 2012-09-11 16:49

@头头哥: 

那你改成sql就没问题了。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-11 16:50
0

用SQL语句实现。如果号码位数固定的话(不固定,你最要把它弄对齐来),你可以把每一位数字分别存为一列。

比如要统计 个位号码3出现的期数,:select count(*) from table where 个位 == 3

Launcher | 园豆:45045 (高人七级) | 2012-09-11 16:49

不仅仅要统计出现次数,还要统计最大遗漏,也就是未出现的最大间隔。

支持(0) 反对(0) 头头哥 | 园豆:2 (初学一级) | 2012-09-11 16:51

@头头哥: 你能否把你要统计的几个指标的算法写出来,先看看SQL怎么写。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-09-11 16:53
0

对于这种无序数据并且要统计的,建议不要选择将数据装载DataTable这样的内存数据表,把它装载在HashTable,HashTable处理这种无序数据效率非常高。

选好数据结构,效率就是不一样的,你试下。

史向平 | 园豆:164 (初学一级) | 2012-09-12 21:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册