使用sql語句分析雙色球

dbhelper發表於2014-11-27
這個題目看似有點無厘頭,老寫技術部落格,也來乾點“正事",用sql語句分析一下近十年來的雙色球情況,不過我肯定算不出來開獎結果,純屬個人娛樂,
個人覺得機率讓一切皆有可能,但是用sql語句測試,有些結果還是和大家的想象有很大的出入。
首先透過博彩網站找到資料來源,可以下載成excel文件之類的,對格式做一個簡單的排版。
然後對這些結果拼湊sql語句,類似如下的方式。

insert into test_data values(2014051              ,          10,16,19,21,23,24,13                    );
insert into test_data values(2014050              ,          03,17,23,25,26,32,13                    );
insert into test_data values(2014049              ,          06,07,16,17,23,32,06                    );
在資料庫中建立一個表test_data,語句如下:
create table test_data(red1 number(2),red2 number(2),red3 number(2),red4 number(2),red5 number(2),red6 number(2),blue number(2));
然後就可以跑這個指令碼了,把資料插入進去。
SQL> select count(*)from test_data;
  COUNT(*)
----------
      1651
這些年來,從2003年起到目前為止一共有1600多期。
來看看下面的結果吧
1.開獎結果(紅球+藍球)有重複,隱隱覺得應該還是會有重複的結果。
SQL> select count(*),red1,red2,red3,red4,red5,red6,blue from test_data group by red1,red2,red3,red4,red5,red6,blue having count(*)>1;
no rows selected

2.可能有些苛刻,那麼紅球相等的機率有多大呢。
SQL> select count(*),red1,red2,red3,red4,red5,red6 from test_data group by red1,red2,red3,red4,red5,red6 having count(*)>1;
no rows selected

3. 6個紅球,連續的情況有嗎?
SQL> select *from test_data where red1+red2+red3+red4+red5+red6=(red1+red6)*red5/2
  2  /
no rows selected
4. 6個連續的沒有,5個的有嗎?
SQL> select *from test_data where red2+red3+red4+red5+red6=(red2+red6)*red5/2
  2  /
no rows selected
SQL> select *from test_data where  red1+red2+red3+red4+red5=(red1+red5)*red4/2 
  2  /
no rows selected

5. 連續4個的呢。看來還是有的,不過是很小的機率了。
red1+red2+red3+red4=(red1+red4)*red3/2
or
red2+red3+red4+red5=(red2+red5)*red4/2
or
red3+red4+red5+red6=(red3+red6)*red5/2


SEQ_NO                RED1       RED2       RED3       RED4       RED5       RED6       BLUE
--------------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
2011087                  2          3          4          5         18         28          1
2011037                  1          3          4          6         17         25         11
2007059                  1          3          4          6          7         29         14
2006151                  1          3          4          6         16         22          8
2005027                  1          3          4          6         21         32         15
2003087                  2          3          4          5         24         28         13

6. 6個數字都在10以內的情況怎麼樣呢。
SQL> select *from test_data where red6<=10;
no rows selected

點到為止,可以看到儘管機率存在,但是從這些年的情況來看,有些事情和我們們想象的還是有些出入。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1349323/,如需轉載,請註明出處,否則將追究法律責任。

相關文章