1. 程式人生 > >Oracle分析函式-nulls first/nulls last

Oracle分析函式-nulls first/nulls last

select * from criss_sales;

通過rank()、dense_rank()、row_number()對記錄進行全排列、分組排列取值 但有時候,會遇到空值的情況,空值會影響得到的結果的正確性,如下所查。

複製程式碼

select
      dept_id
     ,sale_date
     ,goods_type
     ,sale_cnt
     ,rank() over (partition by dept_id order by sale_cnt desc)
from criss_sales;

複製程式碼

我們可以看到部門D01中的銷售數量為NULL的記錄排名居然是第一,這顯然是不對的。

此時,就需要用到nulls last來處理 處理後結果如下:

複製程式碼

select
      dept_id
     ,sale_date
     ,goods_type
     ,sale_cnt
     ,rank() over (partition by dept_id order by sale_cnt desc nulls last)
from criss_sales;

複製程式碼

這樣就得到了期望的結果。 nulls first/nulls last可以幫助我們在處理含有空值的排序排列中,將空值欄位記錄放到最前或最後顯示,幫助我們得到期望的結果。