MySql中IFNULL使用方法案例

本文介绍了在MySQL中如何使用IFNULL函数来统计主从表数据缺失的业务量。通过一个实际的SQL查询案例,展示了IFNULL在判断字段是否为空并进行计数汇总时的作用。查询涉及主表及四张从表的左外连接,筛选出缺失数据并进行汇总。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人目前在进行某业务市平台往省平台的抽取和转换业务,其中市平台查询sql语句一张主表,四张从表,其中有需求统计主从表缺失的业务量。sql分享如下:

SELECT 
   SUM(IF(IF(AID>0,1,0) = 1, 1, 0)) AS 'AA业务总缺失量',
   SUM(IF(IFNULL(AJZLSH,1) = 1, 1, 0)) AS 'BB导致业务缺失量',-- 如果AJZLSH为空,IFNULL函数执行结果为1,此时为sum(if(1=1,1,0)),结果自增1
   SUM(IF(IFNULL(CID,1) = 1, 1, 0))  AS 'CC导致业务缺失数量',
   SUM(IF(IFNULL(DID,1) = 1, 1, 0)) AS 'DD信息导致业务缺失量' ,
   SUM(IF(IFNULL(BID,1) = 1, 1, 0)) AS 'EE导致业务缺失量' 
FROM (
SELECT -- 先查询主表,左外链接从表,查询数据
  A.ID AS AID,A.JZLSH AS AJZLSH,C.ID AS CID,D.ID AS DID,B.ID AS BID 
FROM  
  OPT_FEE A 
  LEFT JOIN PT_INFORMATION C 
    ON C.JGDM = A.JGDM 
    AND C.KH = A.KH 
    AND C.KLX = A.KLX 
  LEFT JOIN OPT_ORGANIZATION_INFO D 
    ON D.JGDM = A.JGDM 
  LEFT JOIN OPT_RECORD B 
    ON A.JGDM = B.JGDM 
    AND A.JZLSH = B.JZLSH 
WHERE A.SFLX = 1 -- 业务需求,收费类型为1,与本案例无关
  AND A.CUSTOM_CREATE_TIME > DATE_ADD(CURDATE(),INTERVAL -2 DAY)
  AND (C.ID IS NULL OR D.ID IS NULL OR B.ID IS NULL) 
  AND A.JGDM='340000002148'
  GROUP BY A.JGDM,A.FYMXID 
  ) AS tmp -- 这个别名不能去掉,会报错



执行结果如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值