你好,我在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分。
我该如何获得它呢?
你好,我在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分。
我该如何获得它呢?
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');
这个查询将返回最大值:
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