美文网首页
结构化数据中的存在判断问题

结构化数据中的存在判断问题

作者: 小黄鸭呀 | 来源:发表于2020-11-04 09:46 被阅读0次

    从数据表中选出数据时,有时候需要判断成员在某些条件下是否存在,这些条件可能是从其他的数据表中查询的。例如分数是成绩表的字段,怎样从学生表中选出各科分数都高于 80 分的学生?如何简便快捷的处理结构化数据中的存在判断问题,这里为你全程解析,并提供 esProc 示例代码。

    1. 外键映射的存在性检测

    在两个表中,根据外键映射的存在性查找记录。

    【例 1】 统计一班男生的平均分。成绩表和学生表如下:

    【解题思路】

    从分数表选出数据时,判断是否存在班级的名称是一班且学生性别是男性的记录,如果存在则选出。

    【SPL 脚本】

    A6的执行结果如下:

    当外键表数据量大时,可以使用游标的有序归并来解决。

    【例 2】 查询 2014 年每月没有使用折扣的订单数量。订单表和订单明细表如下:

    【解题思路】

    从订单表选出数据时,判断是否存在折扣为 0 的订单,如果存在则选出。

    【SPL 脚本】

    A6的执行结果如下:

    2. 非等值连接的存在性检测

    在一个表中,通过非等值连接的存在性检测查找数据。

    【例 3】 查询同一订单跨度超过一年的订单的销售额。订单表部分数据如下:

    【解题思路】

    从订单表中选出数据时,判断订单跨度超过一年的记录是否存在,如果存在则选出。

    【SPL 脚本】

    A5的执行结果如下:

    3. 外键映射的不存在性检测

    在两个表中,根据外键映射的不存在性检测查找记录。

    【例 4】查询所有科目均高于 80 分的学生。成绩表和学生表如下:

    【解题思路】

    从学生表选出数据时,判断学生是否存在任意科目低于 80 分的成绩,如果不存在则选出。

    【SPL 脚本】

    A6的执行结果如下:

    4. 双重否定的存在性检测

    通过双重否定,查询能够匹配的记录。

    【例 5】 查询选修了所有课程的学生。选课表、课程表和学生表如下:

    【解题思路】

    从学生表选出数据时,判断学生是否存在某一科目课程没有选出的记录,如果不存在则选出。处理双重否定的存在性检测时,我们也可以正向思考,只要选出选修科目数量与所有科目数量相同的记录即可。

    【SPL 脚本】

    A7的执行结果如下:

    5. 任意条件的存在性检测

    在两个表中,根据任意条件的存在性检测查找记录。

    【例 6】 查询两科分数差超过 30 分的学生。成绩表和学生表如下:

    【SQL 语句】

    从学生表选出数据时,判断是否存在有任意两个科目成绩相差 30 分的记录,存在则选出。

    【SPL 脚本】

    A7的执行结果如下:

    6. 全部条件的存在性检测

    根据一个表中数据,筛选出满足所有条件的记录。

    【例 7】查询哪些员工的工资比所有销售部员工都要高。员工表部分数据如下:

    【SQL 语句】

    从员工表选出数据时,判断员工工资大于所有销售部员工工资的记录是否存在,存在则选出。

    【SPL 脚本】

    A4的执行结果如下:

    SPL CookBook》中还有更多相关计算示例。

    相关文章

      网友评论

          本文标题:结构化数据中的存在判断问题

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