аналит функции, сортировка, хелп.

эхехе
Дата: 03.12.2009 23:01:13
Есть огромная выборка. Которую, упростив, можно представить так таблицу T:
a   b   c  d  e (cde-вспомогательные текстовые поля по которым идёт сортировка)
13 a1 
13 a3
21 a7
21 a8
21 a9
35 a1
необходимо пронумеровать столбец а следующим образом:
a   b   n
13 a1  1
13 a3  1
21 a7  2
21 a8  2
21 a9  2
35 a1  3
а на меня напал Ктулху и я ничего не могу придумать.
вот ТАК
count(distinct a) over (order by c,d,e)

сделать нельзя.
а так
row_number(a) over (order by c,d,e)

считает все строки.
Может, кто-нибудь подскажет очевидное решение.
Очень стыдно такое спрашивать, но надоело бегать по кругу.
Спасибо отозвавшимся.
_Alex_SMIRNOV_
Дата: 03.12.2009 23:23:42
DENSE_RANK() OVER (ORDER BY c,d,e)
эхехе
Дата: 03.12.2009 23:30:39
спасибо!
NAKrasnov
Дата: 03.12.2009 23:41:59

with
    table_1 as (
                select 13 a, 'a1' b from dual union all
                select 13 a, 'a3' b from dual union all
                select 21 a, 'a7' b from dual union all
                select 21 a, 'a8' b from dual union all
                select 21 a, 'a9' b from dual union all
                select 35 a, 'a1' b from dual 
                )
                
select t.a,
       t.b,
       dense_rank() over(order by a) n
  from table_1 t  
 
  a    b    n
  13  a1   1
  13  a3   1
  21  a7   2 
  21  a8   2 
  21  a9   2
  35  a1   3