通过sql语句分析足彩(第三篇)

在之前写过两片关于sql语句分析足彩的。都从不同的角度提供了一些思路,之前是基于500场比赛的数据分析,为了数据分析的更加有说服性,我抽取了7000多场比赛的数据来作为分析的基础。
自己是在世界杯的时候开始买的,发现真是期望越大,失望越大.。
来看看总体的比赛情况。从1月份开始到10月份,有大概7000多场比赛。
我们创建了一个表来存储这些数据。表data的结构如下:
SQL> desc data
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 MATCH_TYPE                                         VARCHAR2(100)   --比赛类型,比如世界杯,欧冠,英超等等。
 STARTDATE                                          VARCHAR2(15)     --比赛时间
 HOMETEAM                                           VARCHAR2(100)    --主场球队
 AWAYTEAM                                           VARCHAR2(100)   --客场球队
 R                                                  NUMBER                 --让球数
 ZHU                                                NUMBER              --主场球队进球数
 KE                                                 NUMBER               --客场球队进球数
 W                                                  NUMBER               --主胜赔率
 T                                                  NUMBER                --平局赔率
 L                                                  NUMBER                --主负赔率
 RW                                                 NUMBER              --让球胜赔率
 RT                                                 NUMBER               --让球平赔率
 RL                                                 NUMBER               --让球负赔率

SQL> select count(*)from data where r=-1;  --所有比赛中主场让1球的比赛有5092场,占了70%以上的比例,剩下的就是客场让1球,主场让2球等等。

  COUNT(*)
----------
      5092
我们来主要分析主场让1球的情况.
SQL> select count(*)from data where r=-1 and zhu>ke;  --其中主胜的场次有2642场。占到了51.9%的比例。

  COUNT(*)
----------
      2642
SQL> select count(*)from data where r=-1 and zhu=ke --平局的场次有1317场,基本在25.9%的比例。

  COUNT(*)
----------
      1317
SQL> select count(*)from data where r=-1 and w=rl; --主负的场次有1133场,基本在22.2%的比例。

  COUNT(*)
----------
        1133
看来主胜的概率无论如何都是50%左右的比例。从概率论上来说,还是和预期吻合的。一般一场比赛的情况来说,无非就是胜或者不胜,平局和主负占到了50%左右的比例。
我们来举个简单的例子来说明一下主胜,让球负的关系。比如昨天的比赛,尤文图斯和桑普的比赛。比赛的赔率如下:
非让球赔率  1.20   5.00   11.00
让1球赔率    1.80   3.40   3.60
这场比赛不管怎么踢,都脱离不了下面的圈子。我们假设主胜为w,平局为t,主负为l,让球赢为rw,让球平为rt,让球负为rl
主胜1个球以上: w,rw
主胜1个球      :  w,rt
平局              :  t,rl
主负              :    l,rl
如果你仔细分析上面的分布情况,会发现w,rl是包含比赛的各种场景。所以话说回来,你如果投了100块钱,买了主胜,让球负,2串1的比赛就会是4注彩票。肯定不会赔光。
如果赔率在1.4左右,可以保本1.4*1.4*2 / 8 = 0.49  可以保本50%. 当然了从概率的角度来说,两场比赛全是平局/主负的情况占有的比例也不高。如果赚的话,赚钱的比例就是2.2*2.2*2 / 8 =1.21,也就是你投了8块钱能赚到1.6块左右的收益.

我们来看看每场比赛进球总数的情况。
select zhu+ke score,count(*) cnt from data where r=-1 group by zhu+ke order by cnt

 SCORE        CNT

------ ----------

    10          3

     9          5

     8         21

     7         53

     6        178

     5        356

     0        380

     4        697

     1        896

     3        995

     2       1180
11 rows selected.

所有比赛中,进球数1,2,3个概率还是很高的。越是冷门赔率越高。
我们来看看比赛的得分情况,概率是怎么样的。
所有的比赛中1:0, 2:0,1:1,2:1的概率还是很高的。

col score format a20

col total format 999

select zhu+ke total,zhu||'-'||ke score,count(*) cnt from data where r=-1 group by zhu+ke,zhu||'-'||ke order by total,cnt;

     TOTAL SCORE                       CNT

---------- -------------------- ----------

         0 0-0                         380

         1 0-1                         310

         1 1-0                         586

         2 0-2                         159

         2 2-0                         464

         2 1-1                         557

         3 0-3                          64

         3 3-0                         247

         3 1-2                         252

         3 2-1                         432

         4 0-4                          15

         4 1-3                          97

         4 4-0                         106

         4 3-1                         237

         4 2-2                         242

         5 0-5                           8

         5 1-4                          26

         5 5-0                          30

         5 2-3                          80

         5 4-1                         104

         5 3-2                         108

         6 1-5                           5

         6 6-0                          11

         6 2-4                          19

         6 5-1                          37

         6 3-3                          49

         6 4-2                          57

         7 1-6                           1

         7 7-0                           2

         7 2-5                           4

         7 6-1                           8

         7 3-4                           8

         7 4-3                          14

         7 5-2                          16

         8 2-6                           1

         8 8-0                           2

         8 4-4                           2

         8 7-1                           3

         8 5-3                           4

         8 3-5                           4

         8 6-2                           5

         9 5-4                           2

         9 4-5                           3

        10 5-5                           1

        10 6-4                           1

        10 10-0                          1

 

时间: 2024-09-20 21:42:26

通过sql语句分析足彩(第三篇)的相关文章

通过sql语句分析足彩

老是做工作中的数据分析,最近也在看足球彩票,竞猜游戏有输有赢,但是里面还是有不少的数据分析的乐趣,关于足球彩票的分析,自己写了如下的程序,可以参考.当然了,最好能带有主观的分析,这样可能准确率要高一些. 以下是仅根据赔率做的一个分析. 比如我们目前计划投资100块买单场竞猜,胜平负的赔率就有很大的差别,可以考虑有赔率大的部分来弥补赔率小的部分,这样能够基本达到中和(但是话说过来,竞猜公司的计算更是精准,通过自己其他的公式和计算,数据的范围都牢牢控制在它们的制定范围内). 可以直接运行一下的脚本,

生产环境sql语句调优实战第三篇

生产环境有一条sql语句执行比较频繁,占用了大量的cpu资源.原本执行需要花费11秒.在一次排查中引起了我的注意,决定看看cpu消耗到底在哪儿? sql语句是比较简单的,通过查询SUBSCRIBER_FA_V是一个视图.在视图中关联了几个和业务核心表. SELECT TO_CHAR(SUBSCRIBER_NO) SUBSCRIBER_ID,        SUB_STATUS,        SUB_STS_RSN_CD,        TO_CHAR(SUB_STATUS_DATE, 'yyy

[20170703]SQL语句分析执行过程.txt

[20170703]SQL语句分析执行过程.txt --//正常sql select语句执行需要这些过程,create cursor,parse,execute and fetch. --//dml估计缺少fetch步骤.参考vage的书写的例子,原书的例子存在问题,理解如下脚本对于sql语句如何执行很有益处. --//当然正常的编程很少有人这样写代码的. DECLARE    mcur     NUMBER;    mstat    NUMBER;    v_name   VARCHAR2 (

关于足彩(第四篇)

关于足彩,自己之前也林林总总的写了三篇,不管怎么说,都是一种分析和理解,肯定没有特别的规律和绝技可循. 自己也在世界杯开始买足彩交了不少的学费,在这几个月的过程中自己也有一些自己的感悟.首先买足彩的想法就是小酌,不能随便玩大. 很多的比赛如果都那么明显,那博彩公司就消失了.很多比赛玄而又玄,或者爆冷,本来赢的结果输了,或者本来能够赢的结果平了.各个博彩公司对此都有自己的分析和看法,但是赔率大体都在一个区间范围内,差不了太多. 自己在世界杯的时候买了德国对阵阿尔及利亚的比赛,这个比赛从德国战车的表

通过shell脚本分析足彩

最近对足彩的数据进行了一点分析,简单分享一下自己的一点收获, 对于足球比赛的赔率还是很有计算方法的.我收集了一些比赛的数据,进行了简单的分析.创建了一个表为data. 然后对于即将开始的比赛,进行胜负平的赔率计算, 简单的shell脚本实现如下: sqlplus -s n1/n1 set serveroutput on set linesize 200 set pages 50 set feedback on col w format a10 col t format a10 col l for

生产环境sql语句调优实战第八篇

生产环境中的sql语句执行时间是很关键的性能指标,如果某个sql语句执行几个小时,优化以后几分钟,几十秒的话.会有很大的成就感,同时如果某个sql语句执行10秒,能够优化到1秒,感觉提升的幅度不是很大,但是如果这条语句执行极为频繁的话,那这种调优还是更有成就感的. 执行时间是sql调优的一把标尺,但是同时也需要考虑到系统资源的平衡. 今天在系统中发现一条sql语句执行时间很长.平均一个查询要执行一个半小时左右,而且系统的资源消耗极大. 需要说明的service_details 是数据量过亿的表.

生产环境sql语句调优实战第七篇

在数据迁移完成之后,开始了例行的后期数据库维护,早上一来就发现了一个sql执行时间很长了.达到了37279秒.最后在改进调优之后执行速度在1分钟以内. 这个速度是毫无疑问的性能问题,但是是否是因为数据迁移直接导致的呢,通过简单的脚本分析,得出了如下的图表. 显示了同样的sql语句在7月份至今的执行情况,还真是奇怪,昨天以前一直正常,期间也进行过两次数据迁移,昨天的数据迁移完成以后,性能就出奇的差. 通过sql_monitor得到了执行计划和对应的sql语句. 可以看到执行时间是昨天的下午,一直执

生产环境sql语句调优实战第十篇

陆陆续续写了九篇关于生产环境sql语句的调优案例,发现了不少问题,可能有些问题回头来看是比较低级的错误,稍加改动就能够运行在秒级,有些可能是在秒级到毫秒级的小步提升等等,不管调优的改进多大,从dba的角度来看,好多问题都是基于资源来调优的,比如添加索引,降低IO,降低CPU消耗,提高CPU利用率等等.如果有时候从业务角度来下下功夫,可能某种程度上效果要更好于基于资源/代价的调优. 最近客户反馈有几条sql语句IO消耗很高,希望我们能够给提点建议. sql语句很短,但是运行时间在9秒左右.运行频率

生产环境sql语句调优实战第四篇

生产中有一条sql语句消耗了大量的cpu资源,执行时间在18秒左右, Session : PRODBUSER (1560:61133) SQL ID : 1hg2wcuapy3y3 SQL Execution ID : 16871963 Execution Started : 07/21/2014 12:30:20 First Refresh Time : 07/21/2014 12:30:24 Last Refresh Time : 07/21/2014 12:30:37 Duration :