MySQL:获得最大连续发生次数

时间:2016-04-05 06:40:07

标签: mysql

您好我在mysql DB上有下表。

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。

我将如何得到它?

2 个答案:

答案 0 :(得分: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

警告:如果您的表中有主键,请在primary key字段上使用订单。否则你可能会得到随机行为。

无法添加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 :(得分: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