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可以幫助我們在處理含有空值的排序排列中,將空值字段記錄放到最前或最后顯示,幫助我們得到期望的結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM