MySQL - продолжать получать записи, если последняя запись выше предыдущей - PullRequest
0 голосов
/ 23 февраля 2011

Я не знаю, возможна ли эта концепция - может быть, в хранимой процедуре?

Рассмотрим таблицу из двух строк:

`id` (int) | `value` (int) | `date` (datetime)

Допустим, эти строки существуют:

1 | 3  | 2011-02-18
2 | 5  | 2011-02-19
3 | 12 | 2011-02-20
4 | 7  | 2011-02-21
5 | 8  | 2011-02-22
6 | 10 | 2011-02-23

Я пытаюсь найти тренды, для человеческого глаза довольно очевидно, что последние три значения растут каждый день: 7 -> 8 -> 10. Возможно ли получить строки, которые остаются в этом шаблон?

Я думаю, что хранимая процедура могла бы последовательно прочитать строки и найти первый шаблон (10> 8), а затем продолжить проверку, пока она больше не соответствует этой концепции: (8> 7), но не (7> 12), поэтому он остановится.

Любой совет в правильном направлении был бы очень полезен.

1 Ответ

1 голос
/ 23 февраля 2011
set @was:=null; 

select id from 
(
  select 
    id, 
    @was as was, 
    value as now, 
    (@was:=value) 
    from the_table order by date
) as trends 
where was is not null and now<=was limit 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...