Mysql为每位车手找出他们最长的连续获胜记录
我有一个名为riders的表,表中有riders信息,结构如下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 我想了解一下每个车手最长的连续胜利是什么。因此,结果可能
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应该为每个用户进行计算和比较就像我说的,您应该调整此代码以满足您的需要。添加另一个光标来查找所有车手的值并在最后进行比较并不难。您还需要将所有代码放在一个存储过程中,从中返回预期的输出。我敢肯定,你也可以通过几个谷歌搜索找到完整的例子。