Mysql为每位车手找出他们最长的连续获胜记录

Mysql为每位车手找出他们最长的连续获胜记录,mysql,Mysql,我有一个名为riders的表,表中有riders信息,结构如下 id |time_of_ride |rider |Results 1 |08:12:16 |Gavin | Wins 2 |08:12:31 |Gavin | Wins 3 |08:12:40 |Louis | Loose 4 |09:12:31 |Gavin | Wins 5 |10:12:31 |Gavin | Wins 我想了解一下每个车手最长的连续胜利是什么。因此,结果可能

我有一个名为riders的表,表中有riders信息,结构如下

id |time_of_ride |rider |Results
 1 |08:12:16     |Gavin | Wins
 2 |08:12:31     |Gavin | Wins
 3 |08:12:40     |Louis | Loose
 4 |09:12:31     |Gavin | Wins
 5 |10:12:31     |Gavin | Wins
我想了解一下每个车手最长的连续胜利是什么。因此,结果可能如下所示

Rider       Wins
Gavin       2

您可以使用光标在每个车手的一系列结果上循环,并计算赢家数,直到找到输家:

DECLARE win_count INTEGER DEFAULT 0;
DECLARE max_wins INTEGER DEFAULT 0;
DECLARE result varchar(100) DEFAULT "";

DECLARE wins_cursor CURSOR FOR 
SELECT Results FROM TABLE where rider = Gavin;

OPEN wins_cursor;

LOOP

 FETCH wins_cursor INTO result;

 IF result = "Wins" THEN 
     SET win_count = win_count + 1;
 ELSE
     IF win_count > max_wins THEN
         SET max_wins = win_count;
     END IF;
     SET win_count = 0;
 END IF;



END LOOP;

CLOSE wins_cursor;
您需要修改此代码以返回值,并可能在其周围添加另一个光标以循环显示您的所有乘客,但您明白了


编辑:添加变量以保存最大获胜次数。

如何计算最长的未中断跑步?在你的表中,加文赢了4次,为什么你的输出中有2次?请记住,Stackoverflow的存在并不是为了编写代码。我们需要你做了什么的例子,这样我们可以给你一些例子,或者把你推向正确的方向。很抱歉,这应该是加文和一个松散的我会尝试很快更新它。我已经做了很多研究并编写了我的SQL代码,但它还没有接近,不值得在这里分享。它不仅会引导你,而且会让你感到困惑。所以你需要知道的是骑手胜利的总和?最长的连续胜利。假设一名骑手在一天内骑乘10次,并赢得前3次骑乘,最后4次骑乘并失去另一次骑乘,因此此处的完整记录4这看起来不错,但不会有用户的输入sql应该为每个用户进行计算和比较就像我说的,您应该调整此代码以满足您的需要。添加另一个光标来查找所有车手的值并在最后进行比较并不难。您还需要将所有代码放在一个存储过程中,从中返回预期的输出。我敢肯定,你也可以通过几个谷歌搜索找到完整的例子。