Задать вопрос
@likilix
Лицемер

Как пронумировать строки в группе?

with 
  t_table(a, b, c) as (

  select 8003, 4003, 2003 from dual union all 
  select 8003, 4003, 2003 from dual union all
  select 8003, 4003, 2003 from dual union all
  select 8003,4003, 2003 from dual union all
  select 8003, 4003, 2003 from dual union all
  select 8003, 5003,  2003 from dual union all
  select 8003, 5003,  2003 from dual union all
  select 8003, 5003,  2003 from dual union all
  select 8003, 5003,  2003 from dual union all
  select 8003, 5003,  2003 from dual 
)
// внутри групп a и с значение может менятся. мне   нужно пронумеровать каждое новое значение в нутри групп a и   c
select t.a, t.b, t.c, dense_rank() over(partition by t.a, t.c, t.b order by t.b ) rnk_dense 

from t_table t ;
/* Результат должен быть таким */
1
1
1
1
1
2
2
2
2
2
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Партиции тут не требуются, все зависит только от характера сортировки:
select t.a, t.b, t.c,
       dense_rank() over(order by t.a, t.b, t.c) rnk_dense
 from t_table t

PS: Нужно больше примеров, когда изменяются a, b и c в пределах одной выборки, тогда можно точнее написать сортировку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы