SQL中IF函数使用方法

作者: Jerry_ZJY | 来源:发表于2019-01-02 23:08 被阅读0次

发现问题:

在用到if函数的时候,qiu4_others总是没跑出数据来,代码如下:

SELECT count(if(c.parentid is NOT NULL,c.parentid,NULL)) AS qiu4_qiu3,
       count(if(c.parentid is NULL,c.parentid,NULL)) AS qiu4_others, 
       count(if(b.parentid is  NOT NULL AND c.parentid is  NOT NULL,b.parentid,NULL)) AS qiu4_qiu3_qiu5,
       count(if(b.parentid is  NOT NULL AND c.parentid is  NULL,b.parentid,NULL)) AS qiu4_others_qiu5
FROM
    (
    SELECT DISTINCT parentid
    FROM fdm.fdm_mongo_study_group_student_ref_new_chain
    WHERE dp = 'ACTIVE'
        AND studylessonid in (3111,3121,3131,3141,3151,3161,4510,5510)   ----秋4
    )a
LEFT JOIN
    (
    SELECT DISTINCT parentid
    FROM fdm.fdm_mongo_study_parent_join_ref_new_chain
    WHERE dp = 'ACTIVE'
        AND studylessonid in (3411,3421,3436,3441,3451,3461,16001,17001)  ---秋5
    )b ON a.parentid = b.parentid
LEFT JOIN
    (
    SELECT DISTINCT parentid
    FROM fdm.fdm_mongo_study_group_student_ref_new_chain
    WHERE dp = 'ACTIVE'
        AND studylessonid in (3410,3420,3430,3440,3450,3460,4410,5410)   ---秋3
    )c ON a.parentid = c.parentid 

找原因:

按照这个说明来看,如果不是null,那么就返回“c.parentid”这个值,并且count对“c.parentid”这个值进行计数,怎么就不行呢?然后去了百度等相关搜索查阅,没有所以然。
总结了可能导致问题的2个原因:

1.IF中,不能用“c.parentid is NULL”;
2.“c.parentid”计数出现了问题。

image.png

期间,我还把“c.parentid”改成了其他值,跑的时候直接报错,如下:

count(if(c.parentid is NULL,a.parentid,NULL)) AS qiu4_others,

资料上显示是可以返回其他值的啊?一定是哪里错了,于是加上了‘’试了试,发现,妥了.....

小结:

IF函数,返回的是“c.parentid”代表的值,本case中,“c.parentid”代表的值是null,所以count(null)当然是0,这也说明了,为什么其他3个数据都没问题,唯独这一个有问题。

ps:IF里面也可以用and逻辑关系,网上没有求证,于是试着跑了下,结果是正确的。

相关文章

  • SQL中IF函数使用方法

    发现问题: 在用到if函数的时候,qiu4_others总是没跑出数据来,代码如下: 找原因: 按照这个说明来看,...

  • MySQL之聚合函数group_concat()

    本文主要说明SQL中的聚合函数group_concat()的使用方法及实例。 1、group_concat(x, ...

  • SQL Case when 的使用方法

    SQL Case when 的使用方法 Case具有两种格式:简单Case函数和Case搜索函数。 简单Case函...

  • (4)SparkSQL中如何定义UDF和使用UDF

    Spark SQL中用户自定义函数,用法和Spark SQL中的内置函数类似;是saprk SQL中内置函数无法满...

  • SQL内置函数使用手册

    SQL中有很多特别棒的内置函数。本文SQL内置函数手册中总结了SQL中常用的内置函数,包含通用聚合函数、安全检测函...

  • os模块

    os模块中关于文件/目录常的函数使用方法 os.path模块中关于路径常用的函数使用方法

  • SQL之变量

    参考:SQL Server中变量的声明和使用方法sql语句变量定义和样例 SQL中变量包括局部变量和全局变量 局部...

  • Flink自定义函数实现

    鉴于自定义函数函数在SQL中的强大语义,在SQL中有十分广泛的应用。Flink在其Table/SQL API中同样...

  • SQL中常用函数

    SQL中IF、IFNULL函数的使用 SQL中INSTR函数的使用 注:INSTR和LIKE的相同处以及区别 in...

  • Viewmodel构造函数添加变量

    viewModel构造函数中添加变量,使用方法:

网友评论

    本文标题:SQL中IF函数使用方法

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