За последние 24 часа нас посетили 17830 программистов и 1716 роботов. Сейчас ищут 2094 программиста ...

Посчитать максимальное количество значений подряд

Тема в разделе "PHP и базы данных", создана пользователем lemonl, 22 сен 2021.

  1. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Есть столбец, в котором идут положительные и отрицательные значения. Нужно посчитать максимальное количество ПОДРЯД. Т.е. к примеру: 22, 33, 56, -85, -45, 68 - здесь получается 3 подряд положительных и 2 подряд отрицательных.



    С помощью функции sign() получаем знак чисел и сравниваем со знаком из предыдущей строки. Нумеруем записи подряд пока знак сохраняется. Максимальные порядковые номера для каждого знака и есть искомое:

    Код (Text):
    1. select S, max(num)
    2.   from (
    3.    select @num:=if(sign(VAL)=@lp,@num+1,1) num,@lp:=sign(VAL) S
    4.      from table1, (select @lp:=0, @num:=0) A
    5.     order by ORDER_COLUMN
    6.   ) A
    7.   group by S
    Результат

    S _____________ max(num)
    -1 ________________11 получается 11 подряд отрицательных
    1 ________________ 3 получается 3 подряд положительных
    0 ________________ 1

    как получить отдельно значение 11 и 3 из запроса
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.858
    Симпатии:
    748
    Адрес:
    Татарстан
    непонятно что вы хотите... все данные запрос выдает
    вам лишь надо в том скрипте где вы исполняете запрос - забрать нужные значения