排序分析函数中对null的处理

--排序分析函数中对null的处理
--分析:对于null在分析函数中是升序默认是nulls last,降序默认是nulls first。如果不指定排序,那么是升序
create table test(id number,name varchar2(20));
insert into test values(1,'测试1');
insert into test values(1,'测试2');
insert into test values(1,'测试3');
insert into test values(2,'测试4');
insert into test values(2,'测试5');
insert into test values(3,'测试6');
insert into test values(3,'测试7');
insert into test values(4,'测试8');
insert into test values(null,'测试9');
insert into test values(null,'测试10');

commit;

--null默认是按nulls last升序 
SQL> select id,
  2         name,
  3         row_number()over(order by id) rn,
  4         dense_rank()over(order by id) drk,
  5         rank()over(order by id) rk
  6    from test;
 
        ID NAME                         RN        DRK         RK
---------- -------------------- ---------- ---------- ----------
         1 测试1                         1          1          1
         1 测试2                         2          1          1
         1 测试3                         3          1          1
         2 测试4                         4          2          4
         2 测试5                         5          2          4
         3 测试6                         6          3          6
         3 测试7                         7          3          6
         4 测试8                         8          4          8
           测试9                         9          5          9
           测试10                       10          5          9
 
10 rows selected

--最后的执行结果对null值进行了处理,nulls first(降序)
SQL> select id,
  2         name,
  3         row_number()over(order by id nulls first) rn,
  4         dense_rank()over(order by id) drk,
  5         rank()over(order by id desc nulls first) rk
  6    from test;
 
        ID NAME                         RN        DRK         RK
---------- -------------------- ---------- ---------- ----------
           测试10                        1          5          1
           测试9                         2          5          1
         1 测试2                         3          1          8
         1 测试1                         4          1          8
         1 测试3                         5          1          8
         2 测试4                         6          2          6
         2 测试5                         7          2          6
         3 测试6                         8          3          4
         3 测试7                         9          3          4
         4 测试8                        10          4          3
 
10 rows selected
原文地址:https://www.cnblogs.com/huangbiquan/p/8001761.html