双色球基础分析--SQL
代码是心血来潮编写得,就象买彩票一样,为国家做贡献;
首先建立一个表,表得数据可以从福利彩票网站上获得,自己一个一个得录入进去先;
表结构为:
运行以下代码到查询分析器内:
以上是基础的一些统计,暂时没有好的评估办法,象概率那些理论根本屁都没用,因为每个数的出现概率都是一样,所以那些预测软件对下期开什么的评估算法完全是胡扯而已。
首先建立一个表,表得数据可以从福利彩票网站上获得,自己一个一个得录入进去先;
表结构为:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tbSrcData]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tbSrcData]
GO
CREATE TABLE [dbo].[tbSrcData] (
[Q] [varchar] (10) NOT NULL , --期数
[F1] [int] NULL , --1号球数
[F2] [int] NULL , --2号球数
[F3] [int] NULL , --3号球数
[F4] [int] NULL , --4号球数
[F5] [int] NULL , --5号球数
[F6] [int] NULL , --6号球数
[F7] [int] NULL , --7号兰球数
[FXQT] [int] NULL --快乐星期天球数
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbSrcData] WITH NOCHECK ADD
CONSTRAINT [PK_tbSrcData] PRIMARY KEY CLUSTERED
(
[Q]
) ON [PRIMARY]
GO
CREATE UNIQUE INDEX [IX_tbSrcData] ON [dbo].[tbSrcData]([Q]) WITH IGNORE_DUP_KEY ON [PRIMARY]
GO
drop table [dbo].[tbSrcData]
GO
CREATE TABLE [dbo].[tbSrcData] (
[Q] [varchar] (10) NOT NULL , --期数
[F1] [int] NULL , --1号球数
[F2] [int] NULL , --2号球数
[F3] [int] NULL , --3号球数
[F4] [int] NULL , --4号球数
[F5] [int] NULL , --5号球数
[F6] [int] NULL , --6号球数
[F7] [int] NULL , --7号兰球数
[FXQT] [int] NULL --快乐星期天球数
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbSrcData] WITH NOCHECK ADD
CONSTRAINT [PK_tbSrcData] PRIMARY KEY CLUSTERED
(
[Q]
) ON [PRIMARY]
GO
CREATE UNIQUE INDEX [IX_tbSrcData] ON [dbo].[tbSrcData]([Q]) WITH IGNORE_DUP_KEY ON [PRIMARY]
GO
运行以下代码到查询分析器内:
--select * from tbSrcData
--求单双
Select ZZ.*,6-单 as [双]
from(
select
*,
(case when (F1 % 2) <>0 then 1 else 0 end) +
(case when (F2 %2)<>0 then 1 else 0 end) +
(case when (F3 %2)<>0 then 1 else 0 end) +
(case when (F4 %2)<>0 then 1 else 0 end) +
(case when (F5 %2)<>0 then 1 else 0 end) +
(case when (F6 %2)<>0 then 1 else 0 end) as 单
from tbSrcData A
) AS ZZ
Select ZZ.单,6-单 as [双]
into #TTT
from(
select
*,
(case when (F1 % 2) <>0 then 1 else 0 end) +
(case when (F2 %2)<>0 then 1 else 0 end) +
(case when (F3 %2)<>0 then 1 else 0 end) +
(case when (F4 %2)<>0 then 1 else 0 end) +
(case when (F5 %2)<>0 then 1 else 0 end) +
(case when (F6 %2)<>0 then 1 else 0 end) as 单
from tbSrcData A
) AS ZZ
select Sum(单) as a,Sum(双) as b FROM #TTT
drop table #TTT
set nocount on
--求出现率最高数
declare @iCount int
declare @dnySql varchar(1024)
declare @F1 int,@F2 int,@F3 int,@F4 int,@F5 int,@F6 int,@F7 int,@Q varchar(10)
declare @WI int
declare @IsNext bit
declare @ILinkCount int
declare @blueNum int
set @iCount = 1
Create Table #TmpTable(
Num Int null
)
while @iCount<=7
begin
set @dnySql = 'Insert Into #TmpTable select F'+Convert(Varchar,@iCount)+' from tbSrcData'
Exec(@dnySql)
set @iCount = @iCount + 1
end
Select Top 6 Num as 号码,Count(*) as 出现次数, (select Count(*) from tbSrcData) / Count(*) AS 出现期数, (case when(Num % 2 <>0) then '单' else '双' end) as 类型
from #TmpTable
Group by Num
Order by Count(*) Desc
Select Num as 号码,Count(*) as 出现次数, (select Count(*) from tbSrcData) / Count(*) AS 出现期数, (case when(Num % 2 <>0) then '单' else '双' end) as 类型
from #TmpTable
Group by Num
Order by Count(*) asc
set @blueNum =0
select @blueNum = BZ.F7 from(
select Top 1 F7 from tbSrcData group by F7 order by Count(*) desc
) AS BZ
select @blueNum as '兰色号码'
Select IDENTITY(int,1,1) as AutoID,AZ.号码
Into #TmpListTable
from (
Select Top 6 Num as 号码
from #TmpTable
Group by Num
Order by Count(*) Desc
)AS AZ
order by AZ.号码 asc
Drop table #TmpTable
create table #Table(
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
)
Insert into #Table(Q,fxqt)values('最高频率',0)
set @WI = 1
while @WI<=(Select Max(AutoID) from #TmpListTable)
begin
set @dnySql = 'Update #Table set f' + Cast(@WI as Varchar) + '=(select 号码 from #TmpListTable where AutoId = '+Cast(@WI as varchar)+')'
exec(@dnySql)
set @WI = @WI + 1
end
update #Table set f7=@blueNum
drop table #TmpListTable
select * from #Table
Select IDENTITY(int,1,1) as AutoID,*
Into #TmpLinkTable
from
(
select Q,F1,F2,F3,F4,F5,F6,F7,FXQT,0 as FLINK from tbSrcData
union all
select Q,F1,F2,F3,F4,F5,F6,F7,FXQT,0 as FLink from #Table
) as BYZ
drop table #Table
set @WI = 1
while @WI<=(Select Max(AutoID) from #TmpLinkTable)
begin
select @Q=Q,@F1=F1,@F2=F2,@F3=F3,@F4=F4,@F5=F5,@F6=F6,@F7=F7 from #TmpLinkTable where AutoID = @WI
set @IsNext = 0
set @ILinkCount = 0
set @IsNext = case when ABS(@F1-@F2)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F2-@F3)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F3-@F4)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F4-@F5)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F5-@F6)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F6-@F7)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
Update #TmpLinkTable set FLINK = @ILinkCount where AutoID = @WI
set @WI =@WI + 1
end
select * from #TmpLinkTable
--Select (Select Count(*) from #TmpLinkTable ) / (select Sum(FLink) from #TmpLinkTable) as 连数出现频率
select *,(Select Count(*) from #TmpLinkTable ) / (select Sum(FLink) from #TmpLinkTable) as 平均多少期出现连号,
(f1+f2+f3+F4+F5+f6+f7) as 和
Into #TmpSumTable
from #TmpLinkTable
drop table #TmpLinkTable
select
最高期 = (select Top 1 Q from #TmpSumTable order by 和 desc),
最高和 = (select Top 1 和 from #TmpSumTable order by 和 desc),
最低期 = (select Top 1 Q from #TmpSumTable order by 和 asc),
最低和 = (select Top 1 和 from #TmpSumTable order by 和 asc)
select (152-67)/3
select 67
select a.*,
[差]=abs( a.和- (Select 和 from #TmpSumTable where AutoId=(a.AutoID+1))),
[最大最小差百分比] =
(
cast(abs( a.和- (Select 和 from #TmpSumTable where AutoId=(a.AutoID+1))) as float)
/
cast(
(select Top 1 和 from #TmpSumTable order by 和 desc) -
(select Top 1 和 from #TmpSumTable order by 和 asc)
as float)
) * 100
from #TmpSumTable a order by Q ASC
--select
--3 , 9 , 12 , 15 , 16 , 4 , 24,
--3 + 9 + 12 + 15 + 16 + 4 + 24
--select 85 * 0.75
--select 63.75 / 85
Drop table #TmpSumTable
--求单双
Select ZZ.*,6-单 as [双]
from(
select
*,
(case when (F1 % 2) <>0 then 1 else 0 end) +
(case when (F2 %2)<>0 then 1 else 0 end) +
(case when (F3 %2)<>0 then 1 else 0 end) +
(case when (F4 %2)<>0 then 1 else 0 end) +
(case when (F5 %2)<>0 then 1 else 0 end) +
(case when (F6 %2)<>0 then 1 else 0 end) as 单
from tbSrcData A
) AS ZZ
Select ZZ.单,6-单 as [双]
into #TTT
from(
select
*,
(case when (F1 % 2) <>0 then 1 else 0 end) +
(case when (F2 %2)<>0 then 1 else 0 end) +
(case when (F3 %2)<>0 then 1 else 0 end) +
(case when (F4 %2)<>0 then 1 else 0 end) +
(case when (F5 %2)<>0 then 1 else 0 end) +
(case when (F6 %2)<>0 then 1 else 0 end) as 单
from tbSrcData A
) AS ZZ
select Sum(单) as a,Sum(双) as b FROM #TTT
drop table #TTT
set nocount on
--求出现率最高数
declare @iCount int
declare @dnySql varchar(1024)
declare @F1 int,@F2 int,@F3 int,@F4 int,@F5 int,@F6 int,@F7 int,@Q varchar(10)
declare @WI int
declare @IsNext bit
declare @ILinkCount int
declare @blueNum int
set @iCount = 1
Create Table #TmpTable(
Num Int null
)
while @iCount<=7
begin
set @dnySql = 'Insert Into #TmpTable select F'+Convert(Varchar,@iCount)+' from tbSrcData'
Exec(@dnySql)
set @iCount = @iCount + 1
end
Select Top 6 Num as 号码,Count(*) as 出现次数, (select Count(*) from tbSrcData) / Count(*) AS 出现期数, (case when(Num % 2 <>0) then '单' else '双' end) as 类型
from #TmpTable
Group by Num
Order by Count(*) Desc
Select Num as 号码,Count(*) as 出现次数, (select Count(*) from tbSrcData) / Count(*) AS 出现期数, (case when(Num % 2 <>0) then '单' else '双' end) as 类型
from #TmpTable
Group by Num
Order by Count(*) asc
set @blueNum =0
select @blueNum = BZ.F7 from(
select Top 1 F7 from tbSrcData group by F7 order by Count(*) desc
) AS BZ
select @blueNum as '兰色号码'
Select IDENTITY(int,1,1) as AutoID,AZ.号码
Into #TmpListTable
from (
Select Top 6 Num as 号码
from #TmpTable
Group by Num
Order by Count(*) Desc
)AS AZ
order by AZ.号码 asc
Drop table #TmpTable
create table #Table(
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
)
Insert into #Table(Q,fxqt)values('最高频率',0)
set @WI = 1
while @WI<=(Select Max(AutoID) from #TmpListTable)
begin
set @dnySql = 'Update #Table set f' + Cast(@WI as Varchar) + '=(select 号码 from #TmpListTable where AutoId = '+Cast(@WI as varchar)+')'
exec(@dnySql)
set @WI = @WI + 1
end
update #Table set f7=@blueNum
drop table #TmpListTable
select * from #Table
Select IDENTITY(int,1,1) as AutoID,*
Into #TmpLinkTable
from
(
select Q,F1,F2,F3,F4,F5,F6,F7,FXQT,0 as FLINK from tbSrcData
union all
select Q,F1,F2,F3,F4,F5,F6,F7,FXQT,0 as FLink from #Table
) as BYZ
drop table #Table
set @WI = 1
while @WI<=(Select Max(AutoID) from #TmpLinkTable)
begin
select @Q=Q,@F1=F1,@F2=F2,@F3=F3,@F4=F4,@F5=F5,@F6=F6,@F7=F7 from #TmpLinkTable where AutoID = @WI
set @IsNext = 0
set @ILinkCount = 0
set @IsNext = case when ABS(@F1-@F2)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F2-@F3)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F3-@F4)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F4-@F5)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F5-@F6)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
set @IsNext = case when ABS(@F6-@F7)=1 then 1 else 0 end
if @IsNext=1 set @ILinkCount = @ILinkCount + 1
Update #TmpLinkTable set FLINK = @ILinkCount where AutoID = @WI
set @WI =@WI + 1
end
select * from #TmpLinkTable
--Select (Select Count(*) from #TmpLinkTable ) / (select Sum(FLink) from #TmpLinkTable) as 连数出现频率
select *,(Select Count(*) from #TmpLinkTable ) / (select Sum(FLink) from #TmpLinkTable) as 平均多少期出现连号,
(f1+f2+f3+F4+F5+f6+f7) as 和
Into #TmpSumTable
from #TmpLinkTable
drop table #TmpLinkTable
select
最高期 = (select Top 1 Q from #TmpSumTable order by 和 desc),
最高和 = (select Top 1 和 from #TmpSumTable order by 和 desc),
最低期 = (select Top 1 Q from #TmpSumTable order by 和 asc),
最低和 = (select Top 1 和 from #TmpSumTable order by 和 asc)
select (152-67)/3
select 67
select a.*,
[差]=abs( a.和- (Select 和 from #TmpSumTable where AutoId=(a.AutoID+1))),
[最大最小差百分比] =
(
cast(abs( a.和- (Select 和 from #TmpSumTable where AutoId=(a.AutoID+1))) as float)
/
cast(
(select Top 1 和 from #TmpSumTable order by 和 desc) -
(select Top 1 和 from #TmpSumTable order by 和 asc)
as float)
) * 100
from #TmpSumTable a order by Q ASC
--select
--3 , 9 , 12 , 15 , 16 , 4 , 24,
--3 + 9 + 12 + 15 + 16 + 4 + 24
--select 85 * 0.75
--select 63.75 / 85
Drop table #TmpSumTable
以上是基础的一些统计,暂时没有好的评估办法,象概率那些理论根本屁都没用,因为每个数的出现概率都是一样,所以那些预测软件对下期开什么的评估算法完全是胡扯而已。
出处:http://www.cnblogs.com/Chinasf/archive/2005/10/23/260502.html
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/7229614.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2017-07-24 16:25 jack_Meng 阅读(1049) 评论(0) 编辑 收藏 举报