Есть столбец, в котором идут положительные и отрицательные значения. Нужно посчитать максимальное количество ПОДРЯД. Т.е. к примеру: 22, 33, 56, -85, -45, 68 - здесь получается 3 подряд положительных и 2 подряд отрицательных. С помощью функции sign() получаем знак чисел и сравниваем со знаком из предыдущей строки. Нумеруем записи подряд пока знак сохраняется. Максимальные порядковые номера для каждого знака и есть искомое: Код (Text): select S, max(num) from ( select @num:=if(sign(VAL)=@lp,@num+1,1) num,@lp:=sign(VAL) S from table1, (select @lp:=0, @num:=0) A order by ORDER_COLUMN ) A group by S Результат S _____________ max(num) -1 ________________11 получается 11 подряд отрицательных 1 ________________ 3 получается 3 подряд положительных 0 ________________ 1 как получить отдельно значение 11 и 3 из запроса
непонятно что вы хотите... все данные запрос выдает вам лишь надо в том скрипте где вы исполняете запрос - забрать нужные значения