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可以帮助我们在处理含有空值的排序排列中,将空值字段记录放到最前或最后显示,帮助我们得到期望的结果。