Oracle の dense_rank() 関数を使うと、
- ある列の値で順位をつける。
- 同順位がある場合は順位を飛ばさない。
ということを実現できる。
SQL
SQL> select sid, serial#, program, dense_rank() over(order by program) from v$session;
実行結果
SID SERIAL# PROGRAM DENSE_RANK()OVER(ORDERBYPROGRAM) ---------- ---------- ------------------------------------------------ -------------------------------- 248 57430 JDBC Thin Client 1 246 1841 JDBC Thin Client 1 218 63648 JDBC Thin Client 1 220 30967 JDBC Thin Client 1 221 11553 JDBC Thin Client 1 253 8720 JDBC Thin Client 1 228 466 SQL Developer 2 223 21506 ob10.exe 3 239 59748 ob10.exe 3 229 6288 ob9.exe 4 ...