MySQL:获取最大连续出现次数

3

你好,我在MySQL数据库中有以下数据表。

USER_ID SCORE
5   0
5   1
5   1
5   1
5   1
5   1
5   1
5   0
5   0
5   0
5   1
5   1
5   1
5   0
5   0
5   1
5   1
5   0
5   0

这个数据的期望结果最高分是6分。

我该如何获得它呢?


3
我们如何排序表格以获取在您的例子中出现的分数簇? - Tim Biegeleisen
提示:你需要一个主键。 - Strawberry
2
请解释您期望的输出。您是否希望连续的最大出现次数? - 1000111
我想要这个表中的最高连胜分数。 - Sivakarthikeyan
2个回答

1
以下查询可能会完成工作:
    SELECT
    MAX(max_occurence_tracker)
    FROM
    (
        SELECT
            *,
            IF (@prev = score ,@c := @c + 1,@c := 0 ) max_occurence_tracker,
            @prev := score
        FROM otable,(SELECT @prev := - 1 ,@c := 1) var
    ) t;

注意: 我使用的表名为otable

注意: 如果您的表中有主键,则在该主键字段上使用排序。否则,您可能会得到随机行为。

无法添加SQL FIDDLE。 因此,这里是一些测试数据。您可以检查查询:

DROP TABLE IF EXISTS `otable`;
CREATE TABLE `otable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `score` int(11) NOT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO `otable` VALUES ('1', '5', '0');
INSERT INTO `otable` VALUES ('2', '0', '1');
INSERT INTO `otable` VALUES ('3', '0', '1');
INSERT INTO `otable` VALUES ('4', '0', '1');
INSERT INTO `otable` VALUES ('5', '0', '1');
INSERT INTO `otable` VALUES ('6', '0', '1');
INSERT INTO `otable` VALUES ('7', '0', '1');
INSERT INTO `otable` VALUES ('8', '0', '0');
INSERT INTO `otable` VALUES ('9', '5', '0');

谢谢,我明白了。在这里我们需要加上+1,当计数为8时它将给出7。再次感谢,干杯! - Sivakarthikeyan

0

这个查询将返回最大值:

SELECT MAX(column_name) FROM table_name

我现在看到你的标题是“计算最高出现次数”。这可能会有帮助:
SELECT COUNT(MAX(column_name)) FROM table_name

如果你知道最高的值,你可以这样做:

SELECT COUNT(column_name) FROM table_name WHERE score=6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接