美文网首页
空字段引发的惨案

空字段引发的惨案

作者: 乌拉乌拉儿 | 来源:发表于2019-11-30 15:18 被阅读0次

    惨案经过:
    有一张效果广告的表tmp_xiaoguo_table,有字段 dt 日期,order_id 订单,ocpx_stage ocpx阶段(ocpx单子才有),price金额。

    dt  string  "日期"
    order_id  bigint "订单id"
    ocpx_stage  tinyint "ocpx阶段 "
    price  decimal(28,2) "金额"
    

    数据如下:

    2019-11-28    1     1    250.01
    2019-11-28    2     2    250.01
    2019-11-28    3    null   250.01
    

    现在要查ocpx中非二阶段的金额,写的sql代码如下:

    select 
    dt,
    sum(if(ocpx_stage<>2,price,0)) as second_stage_price
    from tmp_xiaoguo_table
    group by dt
    

    查询结果:250.01
    what?what?what?
    问题原因:
    在进行<>的时候,会做类型判断,将null值去掉!!!
    修改

    select 
    dt,
    sum(if(nvl(ocpx_stage,-1)<>2,price,0)) as second_stage_price
    from tmp_xiaoguo_table
    group by dt
    

    查询结果:500.02
    建议:
    在设计模型数据时给予此类维度无意义的默认值,以防后续判断或者关联时出现错误!

    相关文章

      网友评论

          本文标题:空字段引发的惨案

          本文链接:https://www.haomeiwen.com/subject/ikwwwctx.html