我从2,3,5,8
这样的随机数中增加了值,然后又从4,5,6,7
之类的某个数字开始,然后从1,2,3,4,6
所以我在这个安排中有数据2,3,5,8,4,5,6,7,1,2,3,4,6 (single column)
。
现在,我想要的是,我想在每个序列中获得最高价值。在给定的数据中,我想要第一个数据项的值为8,第二个数据为7,第三个数据为6。所以我在上面的数据中需要三行。
我需要写什么样的查询?或者我需要一个光标?
答案 0 :(得分:1)
我假设下面的表定义
CREATE TABLE sequence (
sequence_id INTEGER NOT NULL,
sequence_item INTEGER NOT NULL
);
使用此查询获取每个序列的最高值:
SELECT sequence_id, max(sequence_item)
FROM sequence
GROUP BY sequence_id
假设以下表格定义:
CREATE TABLE `sequence` (
`t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`sequence_item` int(11) NOT NULL,
PRIMARY KEY (`t`)
);
其中'sequence'我们假设每个连续的sequence_item行序列都是t
顺序 - 如果你没有得到它,请参考下面的作者评论;)
您可以使用顺序获取最大数量(在SELECT中省略sid以获得最大数字):
set @sid = 1;
set @prev = (SELECT sequence_item-1 FROM sequence ORDER BY t LIMIT 1);
SELECT sid, MAX(sequence_item)
FROM (
SELECT
@prev,
IF(@prev != (sequence_item-1), (@sid:=@sid+1),@sid) as 'sid',
sequence_item, t, @prev:=sequence_item
FROM sequence
ORDER BY t) as sitems
group by sid