我一直试图根据结果表获得当前的连胜纪录。我虽然遇到了很多麻烦。我已经成功地获得了整个赛段中每支球队的最高连胜纪录。但是,如果他们根据每个团队的最后结果得到一个连胜,那么我无法做到的就是获得当前的连胜。
例如下表中结果为'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中运行。感谢您的帮助。
答案 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');