您好我在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。
我将如何得到它?
答案 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