我有一张名为骑手的表,里面有车友信息,结构如下
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
答案 0 :(得分:1)
您可以使用光标循环遍历每个骑手的一系列结果并计算胜利,直至找到损失:
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;
您需要调整此代码以返回值,并且可能在其周围添加另一个光标以循环所有车手,但您明白了。
编辑:添加变量以保存最大胜利数。