Mysql当前获胜连胜

时间:2018-01-24 13:23:50

标签: mysql

我一直试图根据结果表获得当前的连胜纪录。我虽然遇到了很多麻烦。我已经成功地获得了整个赛段中每支球队的最高连胜纪录。但是,如果他们根据每个团队的最后结果得到一个连胜,那么我无法做到的就是获得当前的连胜。

例如下表中结果为'H'表示为胜利。

TeamID  Result    Date
  25    A         02/12/17
  25    H         16/12/17
  25    D         22/12/17
  25    D         03/01/18
  25    H         20/01/18
  28    D         09/12/17
  28    D         23/12/17
  28    H         01/01/18
  28    H         20/01/18
  58    H         02/12/17
  58    A         16/12/17
  58    H         23/12/17
  58    H         01/01/18
  58    D         20/01/18
  61    D         03/12/17
  61    A         17/12/17
  61    D         26/12/17
  61    H         30/12/17
  61    H         14/01/18

所以TeamID 25目前的连胜纪录为1. TeamID 28连胜2连胜,第58队连胜0连胜,因为最后的结果是'D'(平局) 我已经使用了下面的代码,我可以使用它,但没有使用额外的分组,结果全部返回1,这显然是错误的。

http://www.sqlteam.com/article/detecting-runs-or-streaks-in-your-data

我在这里查看了其他代码,但它们似乎都不是基于最后的结果,或者它们是基于SQL Server的,但我需要代码才能在MySQL中运行。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如何提出问题;

document.createElement

如何回答一个问题:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(TeamID  INT NOT NULL
,Result  CHAR(1) NOT NULL
,Date DATE NOT NULL
,PRIMARY KEY(teamid,date)
);

INSERT INTO my_table VALUES
(25,'A','2017-12-02'),
(25,'H','2017-12-16'),
(25,'D','2017-12-22'),
(25,'D','2018-01-03'),
(25,'H','2018-01-20'),
(28,'D','2017-12-09'),
(28,'D','2017-12-23'),
(28,'H','2018-01-01'),
(28,'H','2018-01-20'),
(58,'H','2017-12-02'),
(58,'A','2017-12-16'),
(58,'H','2017-12-23'),
(58,'H','2018-01-01'),
(58,'D','2018-01-20'),
(61,'D','2017-12-03'),
(61,'A','2017-12-17'),
(61,'D','2017-12-26'),
(61,'H','2017-12-30'),
(61,'H','2018-01-14');