Oracle分析函数-nulls first/nulls last(null放在最后或最前)

oracle 专栏收录该内容
49 篇文章 1 订阅
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可以帮助我们在处理含有空值的排序排列中,将空值字段记录放到最前或最后显示,帮助我们得到期望的结果。

总结:
Nulls first和nulls last是Oracle Order by支持的语法
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
使用语法如下:
–将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first

–将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last

  • 1
    点赞
  • 0
    评论
  • 9
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

゛Smlie。

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值