gpt4 book ai didi

Mysql当前连胜

转载 作者:行者123 更新时间:2023-11-29 10:25:20 25 4
gpt4 key购买 nike

我一直在尝试根据结果表来获取当前的连胜记录。不过我在这方面遇到了很多麻烦。我已经设法计算出每支球队在整个时期内的最高连胜纪录。但我无法做到的是,如果他们根据每支球队最后的成绩获得当前的连胜,那么我无法做到这一点。

例如下表,结果为“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,而 TeamID 58 的连胜次数为 0,因为最后的结果是“D”(平局)我使用了下面的代码,我可以使用它,但不能使用额外的分组,结果全部返回为 1,这显然是错误的。

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

我已经查看了这里的其他代码,但它们似乎都不是基于最后的结果,或者它们是基于 SQL Server 的,但我需要代码在 MySQL 中工作。感谢您对此提供的任何帮助。

最佳答案

如何提问;

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');

如何回答:

SELECT a.* 
FROM
( SELECT x.*
, CASE WHEN @prev=teamid THEN CASE WHEN result = 'H' THEN @i:=@i+1 ELSE @i:=0 END ELSE @i:=0 END i
, @prev:=teamid prev
FROM my_table x
, (SELECT @prev:=null,@i:=0) vars
ORDER
BY teamid
, date
) a
JOIN
( SELECT teamid
, MAX(date) date
FROM my_table
GROUP
BY teamid
) b
ON b.teamid = a.teamid
AND b.date = a.date;
+--------+--------+------------+------+------+
| TeamID | Result | Date | i | prev |
+--------+--------+------------+------+------+
| 25 | H | 2018-01-20 | 1 | 25 |
| 28 | H | 2018-01-20 | 2 | 28 |
| 58 | D | 2018-01-20 | 0 | 58 |
| 61 | H | 2018-01-14 | 2 | 61 |
+--------+--------+------------+------+------+

关于Mysql当前连胜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com