2016-04-07 3 views
1

У меня есть таблица, в которой каждая строка содержит значение и дату и время. Он содержит сотни тысяч строк. Я хотел бы выбрать максимальное (максимальное) значение каждые n строк.Получить наибольшее значение за n строк

я ранее использовал запрос, чтобы получить наибольшее значение каждый час, но это не совсем то, что я ищу:

SELECT datetime, MAX(value) 
FROM `table` 
GROUP BY date_format(datetime, '%Y-%m-%d &h') 

Любой совет будет весьма признателен!

+1

как бы вы указать 'для каждого п rows'? основано ли оно на datetime или некоторых других критериях? –

+0

Строки упорядочены по дате и индексируются. Поэтому я хотел бы получить максимальное значение в первых 100 значениях, затем самое высокое значение во вторых 100 строках и так далее. – Kyle

ответ

1

Вы можете перечислить строки, а затем агрегату желания вашего сердца:

select min(rn), max(rn), min(datetime), max(datetime), max(value) 
from (select t.*, (@rn := @rn + 1) rn 
     from `table` t cross join 
      (select @rn := 0) params 
     order by datetime 
    ) t 
group by floor((rn - 1)/@n) 
order by min(rn); 
+0

Отлично, только то, что я был после. Спасибо! – Kyle

Смежные вопросы