Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет. По работе столкнулся с задачей.
Суть - есть некий сервисный запрос (в процессе обработки он меняет свой статус, (в работе, закрыт, передан и тд.)). Каждый раз когда статус меняется мне надо присвоить очередной шаг (ранжировать строки). Оконная функция dence_rank () не подходит.
Потому что, каждому статусу присваивает свой уникальный ранг. Например, запрос изначально в статусе "в работе" - ренк 1, далее переходит в статус "в ожидании" - ранк 2, затем снова возвращается в статус "в работе" - мне нужно присвоить записи ранг 3, а sql присвоит - 1. Пример в ексельке прикрепил. Задача кажется простой, но я завис на несколько дней, ничего не могу придумать.
Сможете помочь?
Неактивен
row_number() over (partition by id order by valid_from asc)
Неактивен
Привет, этот способ не помогает. Пробовал.
По этому принципу каждая строка в подгруппе будет проранжирована уникальным значением, т.к. valid_from в каждой строчке уникален.
valid_from и valid_to это историчность изменения записи о запросе
Суть верна. Надо группировать по id (запрос) и order by по valid_from (т.к. я хочу отследить изменение статуса запроса от момента его создания до момента закрытия). Для этого
каждый раз когда запрос переходит из одного статуса в другой я присваиваю строчке +1 (на 1 больше чем в предыдущей записи). Если в двух строках подряд статус не менялся то +1 не нужен, у этих строк будет одинаковая циферка.
Подошла бы функция dence ranc () но она всём одинаковым статусам присваивает одинаковое значение. Допустить запрос в статусе 'в работе' - 1, затем снова в работе (все ещё - 1) затем в статусе 'передан' - 2, затем снова в работе (и вот здесь мне надо присвоил шаг - 3, а dence_ranc () присвоит - 1). row number каждой строке присваивает уникальное значение, а мне нужно чтобы у двух строк идущих подряд в которых статус не меняется было одинаковое значение. Всё это не то.
Отредактированно dima_b (09.06.2022 00:09:46)
Неактивен
Ребят мб есть варианты у кого? Вопрос актуален.
Неактивен
Пронумеровать с помощью пользовательских переменных. См Оптимизация запросов MySQL с использованием пользовательских переменных
Неактивен