双色球得一些基础分析[sql]

代码是心血来潮编写得,就象买彩票一样,为国家做贡献;
首先建立一个表,表得数据可以从 福利彩票网站上获得,自己一个一个得录入进去先;

表结构为:

None.gif if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[tbSrcData] ' and   OBJECTPROPERTY (id, N ' IsUserTable ' =   1 )
None.gif
drop   table   [ dbo ] . [ tbSrcData ]
None.gif
GO
None.gif
None.gif
CREATE   TABLE   [ dbo ] . [ tbSrcData ]  (
None.gif    
[ Q ]   [ varchar ]  ( 10 NOT   NULL  ,   -- 期数
None.gif
     [ F1 ]   [ int ]   NULL  ,  -- 1号球数
None.gif
     [ F2 ]   [ int ]   NULL  ,  -- 2号球数
None.gif
     [ F3 ]   [ int ]   NULL  ,  -- 3号球数
None.gif
     [ F4 ]   [ int ]   NULL  ,  -- 4号球数
None.gif
     [ F5 ]   [ int ]   NULL  ,  -- 5号球数
None.gif
     [ F6 ]   [ int ]   NULL  ,  -- 6号球数
None.gif
     [ F7 ]   [ int ]   NULL  ,  -- 7号兰球数
None.gif
     [ FXQT ]   [ int ]   NULL    -- 快乐星期天球数
None.gif
ON   [ PRIMARY ]
None.gif
GO
None.gif
None.gif
ALTER   TABLE   [ dbo ] . [ tbSrcData ]   WITH   NOCHECK   ADD  
None.gif    
CONSTRAINT   [ PK_tbSrcData ]   PRIMARY   KEY    CLUSTERED  
None.gif    (
None.gif        
[ Q ]
None.gif    )  
ON   [ PRIMARY ]  
None.gif
GO
None.gif
None.gif 
CREATE    UNIQUE    INDEX   [ IX_tbSrcData ]   ON   [ dbo ] . [ tbSrcData ] ( [ Q ] WITH   IGNORE_DUP_KEY   ON   [ PRIMARY ]
None.gif
GO
None.gif
None.gif

运行以下代码到查询分析器内:

None.gif -- select * from tbSrcData
None.gif

None.gif
None.gif
-- 求单双
None.gif

None.gif
Select  ZZ. * , 6 - 单  as   [ ]
None.gif
from (
None.gif
select
None.gif    
* ,
None.gif    (
case   when  (F1  %   2 <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F2  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F3  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F4  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F5  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F6  % 2 ) <> 0   then   1   else   0   end as  单
None.gif
from  tbSrcData A
None.gif
AS  ZZ
None.gif
None.gif
Select  ZZ.单, 6 - 单  as   [ ]
None.gif    
into  #TTT
None.gif
from (
None.gif
select
None.gif    
* ,
None.gif    (
case   when  (F1  %   2 <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F2  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F3  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F4  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F5  % 2 ) <> 0   then   1   else   0   end +  
None.gif    (
case   when  (F6  % 2 ) <> 0   then   1   else   0   end as  单
None.gif
from  tbSrcData A
None.gif
AS  ZZ
None.gif
None.gif
select   Sum (单)  as  a, Sum (双)  as  b  FROM  #TTT
None.gif
drop   table  #TTT
None.gif
None.gif
None.gif
set  nocount  on
None.gif
-- 求出现率最高数
None.gif
declare   @iCount   int
None.gif
declare   @dnySql   varchar ( 1024 )
None.gif
declare   @F1   int , @F2   int , @F3   int , @F4   int , @F5   int , @F6   int , @F7   int , @Q   varchar ( 10 )
None.gif
declare   @WI   int
None.gif
declare   @IsNext   bit
None.gif
declare   @ILinkCount   int
None.gif
declare   @blueNum   int
None.gif
None.gif
set   @iCount   =   1
None.gif
Create   Table  #TmpTable(
None.gif    Num 
Int   null
None.gif)
None.gif
while   @iCount <= 7
None.gif
begin
None.gif    
set   @dnySql   =   ' Insert Into #TmpTable select F ' + Convert ( Varchar , @iCount ) + '  from tbSrcData '
None.gif    
Exec ( @dnySql )
None.gif    
set   @iCount   =   @iCount   +   1
None.gif
end
None.gif
None.gif
Select   Top   6  Num  as  号码, Count ( * as  出现次数, ( select   Count ( * from  tbSrcData)  /   Count ( * AS  出现期数, ( case   when (Num  %   2   <> 0 then   ' '   else   ' '   end as  类型
None.gif
from  #TmpTable 
None.gif
Group   by  Num
None.gif
Order   by   Count ( * Desc
None.gif
None.gif
Select  Num  as  号码, Count ( * as  出现次数, ( select   Count ( * from  tbSrcData)  /   Count ( * AS  出现期数, ( case   when (Num  %   2   <> 0 then   ' '   else   ' '   end as  类型
None.gif
from  #TmpTable 
None.gif
Group   by  Num
None.gif
Order   by   Count ( * asc
None.gif
None.gif
None.gif
set   @blueNum   = 0
None.gif
select   @blueNum   =  BZ.F7  from (
None.gif
select   Top   1   F7  from  tbSrcData  group   by  F7  order   by   Count ( * desc
None.gif
AS  BZ
None.gif
select   @blueNum   as   ' 兰色号码 '
None.gif
None.gif
Select   IDENTITY ( int , 1 , 1 as  AutoID,AZ.号码
None.gif
Into  #TmpListTable
None.gif
from  (
None.gif
Select   Top   6   Num  as  号码
None.gif
from  #TmpTable 
None.gif
Group   by  Num
None.gif
Order   by   Count ( * Desc
None.gif)
AS  AZ
None.gif
order   by  AZ.号码  asc
None.gif
None.gif
Drop   table  #TmpTable
None.gif
None.gif
create   table  # Table (
None.gif    Q 
varchar ( 10 null ,f1  int   null ,f2  int   null ,f3  int   null ,f4  int   null ,f5  int   null ,f6  int   null ,f7  int   null ,fxqt  int   null
None.gif)
None.gif
None.gif
Insert   into  # Table (Q,fxqt) values ( ' 最高频率 ' , 0 )
None.gif
None.gif
None.gif
None.gif
set   @WI   =   1
None.gif
while   @WI <= ( Select   Max (AutoID)  from  #TmpListTable)
None.gif
begin
None.gif    
set   @dnySql   =   ' Update #Table set f '   +   Cast ( @WI   as   Varchar +   ' =(select 号码 from #TmpListTable where AutoId =  ' + Cast ( @WI   as   varchar ) + ' ) '
None.gif    
exec ( @dnySql )
None.gif    
set   @WI   =   @WI   +   1
None.gif
end
None.gif
None.gif
update  # Table   set  f7 = @blueNum
None.gif
None.gif
drop   table  #TmpListTable
None.gif
None.gif
select   *   from  # Table
None.gif
None.gif
Select   IDENTITY ( int , 1 , 1 as  AutoID, *
None.gif    
Into  #TmpLinkTable
None.gif
from  
None.gif(
None.gif
select  Q,F1,F2,F3,F4,F5,F6,F7,FXQT, 0   as  FLINK  from  tbSrcData
None.gif
union   all
None.gif
select  Q,F1,F2,F3,F4,F5,F6,F7,FXQT, 0   as  FLink  from  # Table
None.gif
as  BYZ
None.gif
None.gif
drop   table  # Table
None.gif
None.gif
set   @WI   =   1
None.gif
while   @WI <= ( Select   Max (AutoID)  from  #TmpLinkTable)
None.gif
begin
None.gif    
select   @Q = Q, @F1 = F1, @F2 = F2, @F3 = F3, @F4 = F4, @F5 = F5, @F6 = F6, @F7 = F7  from  #TmpLinkTable  where  AutoID  =   @WI
None.gif    
set   @IsNext   =   0
None.gif    
set   @ILinkCount   =   0
None.gif    
set   @IsNext   =   case   when   ABS ( @F1 - @F2 ) = 1   then   1   else   0   end
None.gif    
if   @IsNext = 1   set   @ILinkCount   =   @ILinkCount   +   1
None.gif    
set   @IsNext   =   case   when   ABS ( @F2 - @F3 ) = 1   then   1   else   0   end
None.gif    
if   @IsNext = 1   set   @ILinkCount   =   @ILinkCount   +   1
None.gif    
set   @IsNext   =   case   when   ABS ( @F3 - @F4 ) = 1   then   1   else   0   end
None.gif    
if   @IsNext = 1   set   @ILinkCount   =   @ILinkCount   +   1
None.gif    
set   @IsNext   =   case   when   ABS ( @F4 - @F5 ) = 1   then   1   else   0   end
None.gif    
if   @IsNext = 1   set   @ILinkCount   =   @ILinkCount   +   1
None.gif    
set   @IsNext   =   case   when   ABS ( @F5 - @F6 ) = 1   then   1   else   0   end
None.gif    
if   @IsNext = 1   set   @ILinkCount   =   @ILinkCount   +   1
None.gif    
set   @IsNext   =   case   when   ABS ( @F6 - @F7 ) = 1   then   1   else   0   end
None.gif    
if   @IsNext = 1   set   @ILinkCount   =   @ILinkCount   +   1
None.gif
None.gif    
Update  #TmpLinkTable  set  FLINK  =   @ILinkCount   where  AutoID  =   @WI
None.gif    
set   @WI   = @WI   +   1
None.gif
end
None.gif
None.gif
select   *   from  #TmpLinkTable
None.gif
None.gif
-- Select (Select Count(*) from #TmpLinkTable ) / (select Sum(FLink) from #TmpLinkTable) as 连数出现频率
None.gif

None.gif
select   * ,( Select   Count ( * from  #TmpLinkTable )  /  ( select   Sum (FLink)  from  #TmpLinkTable)  as  平均多少期出现连号,
None.gif    (f1
+ f2 + f3 + F4 + F5 + f6 + f7)  as  和
None.gif
Into  #TmpSumTable
None.gif
from  #TmpLinkTable
None.gif
None.gif
drop   table  #TmpLinkTable
None.gif
None.gif
select
None.gif    最高期 
=  ( select   Top   1  Q  from  #TmpSumTable  order   by  和  desc ),
None.gif    最高和 
=  ( select   Top   1  和  from  #TmpSumTable  order   by  和  desc ),
None.gif    最低期 
=  ( select   Top   1  Q  from  #TmpSumTable  order   by  和  asc ),
None.gif    最低和 
=  ( select   Top   1  和  from  #TmpSumTable  order   by  和  asc )
None.gif
None.gif
select  ( 152 - 67 ) / 3  
None.gif
select   67
None.gif
None.gif
select  a. * ,
None.gif    
[ ] = abs ( a.和 -  ( Select  和  from  #TmpSumTable  where  AutoId = (a.AutoID + 1 ))),
None.gif    
[ 最大最小差百分比 ]   =
None.gif    (
None.gif    
cast ( abs ( a.和 -  ( Select  和  from  #TmpSumTable  where  AutoId = (a.AutoID + 1 )))  as   float )
None.gif     
/  
None.gif    
cast
None.gif        (
select   Top   1  和  from  #TmpSumTable  order   by  和  desc -  
None.gif        (
select   Top   1  和  from  #TmpSumTable  order   by  和  asc )
None.gif    
as   float )
None.gif    ) 
*   100
None.gif
from  #TmpSumTable a  order   by  Q  ASC
None.gif
-- select 
None.gif--
3 , 9 , 12 , 15 , 16 , 4 , 24,
None.gif--
3 + 9 + 12 + 15 + 16 + 4 + 24
None.gif

None.gif
-- select 85 * 0.75
None.gif--
select 63.75 / 85
None.gif

None.gif
Drop   table  #TmpSumTable 


以上是基础的一些统计,暂时没有好的评估办法,象概率那些理论根本屁都没用,因为每个数的出现概率都是一样,所以那些预测软件对下期开什么的评估算法完全是胡扯而已。

转载于:https://www.cnblogs.com/Chinasf/archive/2005/10/23/260502.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值